-
Notifications
You must be signed in to change notification settings - Fork 0
Wiki DataTransfer
Le constructeur de la classe est sous la forme:
new DTServer(Integer)
-
Integerreprésente le port de connexion
DTServer srv = new DTServer(8888);
Le constructeur de la classe est sous la forme:
new DTClient(InetAddress, Integer)
-
InetAddressreprésente la cible, le serveur sur lequel se connecter -
Integerreprésente le port de connexion
DTClient cli = new DTClient(InetAddress.getLocalHost(), 8888);
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.
-
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.
-
isCancelledPour 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.
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.
On va utiliser la méthode send(String) de l'objet DTClient ou broadcast(String) de l'objet DTServer.
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).
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.
-
getData()Pour récupérer les données sous forme de String. -
setData(String)Pour modifier les données (pour les autresTransferListener)
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
Pour les clients il faut utiliser la méthode close() de l'objet DTClient et pour les serveurs stop() de DTServer.
Pour les client
cli.close();
Pour les serveurs
srv.stop();