49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package clientserver;
|
|
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.net.InetAddress;
|
|
|
|
public class Client {
|
|
public static void main(String[] args) {
|
|
try {
|
|
// 1 - Création du canal avec un port libre
|
|
DatagramSocket socketClient = new DatagramSocket();
|
|
InetAddress adresseServeur = InetAddress.getByName("localhost");
|
|
int portServeur = 6666;
|
|
|
|
// 2 - Envoyer un message au serveur
|
|
String message = "Hello Server";
|
|
byte[] envoyees = message.getBytes();
|
|
DatagramPacket paquetEnvoye = new DatagramPacket(
|
|
envoyees, envoyees.length, adresseServeur, portServeur);
|
|
socketClient.send(paquetEnvoye);
|
|
System.out.println("Message envoyé au serveur");
|
|
|
|
// 3 - Recevoir
|
|
byte[] recues = new byte[1024]; // tampon de réception
|
|
DatagramPacket paquetRecu = new DatagramPacket(recues, recues.length);
|
|
socketClient.receive(paquetRecu);
|
|
String reponse = new String(paquetRecu.getData(), 0, paquetRecu.getLength());
|
|
|
|
if (reponse.startsWith("PORT:")) {
|
|
int newPort = Integer.parseInt(reponse.substring(5));
|
|
|
|
System.out.println("Connexion au nouveau port: " + newPort);
|
|
|
|
// 4 - Communiquer sur le nouveau port
|
|
String messagePort = "Message au nouveau port";
|
|
byte[] envoyeesPort = messagePort.getBytes();
|
|
DatagramPacket paquetPort = new DatagramPacket(
|
|
envoyeesPort, envoyeesPort.length, adresseServeur, newPort);
|
|
socketClient.send(paquetPort);
|
|
}
|
|
|
|
// 5 - Libérer le canal
|
|
socketClient.close();
|
|
} catch (Exception e) {
|
|
System.err.println(e);
|
|
}
|
|
}
|
|
}
|