-
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)
-
Integer
représente le port de connexion
DTServer srv = new DTServer(8888);
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
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.
-
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.
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();