Skip to content

Wiki DataTransfer

Benjamin CORNOU edited this page Nov 9, 2018 · 1 revision

Wiki DataTransfer - FR

Créer une instance Server

Théorie

Le constructeur de la classe est sous la forme: new DTServer(Integer)

  • Integer représente le port de connexion

Exemples

DTServer srv = new DTServer(8888);

Créer une instance Client

Théorie

Le constructeur de la classe est sous la forme: new DTClient(InetAddress, Integer)

  • InetAddress représente la cible, le serveur sur lequel se connecter
  • Integer représente le port de connexion

Exemples

DTClient cli = new DTClient(InetAddress.getLocalHost(), 8888);

Récupérer les nouvelles connexion (Serveur)

Théorie

Deux solutions: Créer une classe extends de ConnectionListener ou instancier directement un objet ConnectionListener. La méthode qui nous intéresse est onConnection(ConnectionEvent). ConnectionEvent hérite de sa classe mère: Event.

Méthodes

Méthodes de Event

  • getSocket() Pour récupérer le Socket du client.
  • getAddress() Pour récupérer l'adresse IP du client sous forme de String.
  • send(String) Pour envoyer des données au client.

Méthodes de ConnectionEvent

  • isCancelled Pour savoir si la connexion a été annulée (par un autre ConnectionListener).
  • setCancelled(boolean) Pour définir si la connexion est annulée ou non.

Exemples

srv.addListener(new ConnectionListener() {
	@Override
	public void onConnection(ConnectionEvent event) {
		System.out.println("Client connected with ip: " + event.getAddress());
	}
});

Ici, on affiche l'IP de chaque client qui se connecte.

Envoyer des données

Théorie

On va utiliser la méthode send(String) de l'objet DTClient ou broadcast(String) de l'objet DTServer.

Exemples

cli.send("Je peux me connecter ?");
srv.broadcast("Oui, aller viens !");

Ici, un problème survient, la méthode broadcast(String) sur DTServer envoie l'information à tous les clients connectés! Si on veux envoyer des données uniquement à un client il faut d'abord lire des données reçues (Ou recevoir une connexion comme vu plus haut).

Lire des données reçues

Théorie

Même chose que pour les nouveaux clients, on peut créer une classe hérité de TransferListener cette fois-ci ou alors instancier directement un objet TransferListener. TransferEvent hérite de Event.

Méthodes de TransferEvent

  • getData() Pour récupérer les données sous forme de String.
  • setData(String) Pour modifier les données (pour les autres TransferListener)

Exemples

srv.addListener(new TransferListener() {
	@Override
	public void onReceive(TransferEvent event) {
		System.out.println("Received \"" + event.getData() + "\" from " + event.getAddress());
		event.send("Thanks for this awesome data!");
	}
});

Ici on applique sur un serveur mais cela fonctionne aussi sur un client! Quand on reçoit une chaine de caractère, on affiche le contenu sur la console puis on répond

Fermer les connections

Théorie

Pour les clients il faut utiliser la méthode close() de l'objet DTClient et pour les serveurs stop() de DTServer.

Exemples

Pour les client

cli.close();

Pour les serveurs

srv.stop();

Pour toute question, précision ou bugs à signaler, contacter-moi via l'onglet issues: