Développement d’application Développement d’application
client/serveur client/serveur
Zouhair ELHADARI
www.hadari.jimdo.com
Centre de BTS Dakhla
Chapitre 5 Chapitre 5
Programmation réseau en JAVA
Programmation réseau en JAVA
Programmation réseau en JAVA
Programmation réseau en JAVA
Partie 2:
Partie 2:
La programmation réseau en La programmation réseau en La programmation réseau en La programmation réseau en
mode non
mode non--connecté connecté (UDP)
(UDP)
Utilisation des sockets Datagrams
Quelles classes utiliser ?
il faut utiliser les classes DatagramPacket et DatagramSocket
DatagramSocket
Ces objets sont initialisés différemment selon qu’ils
sont utilisés pour envoyer ou recevoir des paquets
Envoi d’un Datagram
1. créer un DatagramPacket en spécifiant :
les données à envoyer
leur longueur
la machine réceptrice et le port
la machine réceptrice et le port
2. utiliser la méthode send(DatagramPacket) de DatagramSocket
pas d’arguments pour le constructeur car toutes les
Envoi d’un Datagram
pas d’arguments pour le constructeur car toutes les
informations se trouvent dans le paquet envoyé
//Machine destinataire
InetAddress address = InetAddress.getByName(" site.com ");
int PORT = 4562;
//Création du message à envoyer
byte[] emessage = (new String(" Message à envoyer ")).getBytes();
//Initialisation du paquet avec toutes les informations DatagramPacket paquet = new DatagramPacket(message,message.lenght, DatagramPacket paquet = new DatagramPacket(message,message.lenght, address,PORT);
//Création du socket et envoi du paquet DatagramSocket socket = new DatgramSocket();
socket.send(paquet);
//Fermeture du socket socket.close();
Réception d’un Datagram
1. créer un DatagramSocket qui écoute sur le port de la machine du destinataire
2. créer un DatagramPacket pour recevoir les paquets envoyés par le serveur
2. créer un DatagramPacket pour recevoir les paquets envoyés par le serveur
3. utiliser la méthode receive() de DatagramPacket
//Définir un buffer de réception byte[ ] buffer = new byte[1024];
//On associe un paquet à un buffer vide pour la réception DatagramPacket paquet =new DatagramPacket(buffer,buffer.length());
//On crée un socket pour écouter sur le port DatagramSocket socket = new DatgramSocket(PORT);
while (true) {
//attente de réception socket.receive(paquet);
socket.receive(paquet);
//affichage du paquet reçu
String s = new String(packet.getData(),0,paquet.getLength());
System.out.println(“Paquet reçu : + s);
}
//Fermeture du socket socket.close();
c ast sen der(cli e nt )
//Machine destinataireInetAddress addr = InetAddress.getByName(" 237.3.3.1");
//Création du message à envoyer Byte[ ] data = "un message".getBytes();
//Initialisation du paquet avec toutes les informations
DatagramPacket packet = new DatagramPacket(data, data.length, addr, 1234);
c ast sen der(cli e nt )
//Création du socket Multicast et envoi du paquet MulticastSocket s = new MulticastSocket();
s.send(packet,(byte)1);
ult icas t Rece iv er(se r v e ur)
//Définir un buffer de réception byte[ ] buffer = new byte[1024];
//On associe un paquet à un buffer vide pour la réception DatagramPacket packet = new DatagramPacket(buffer,buffer.lenght);
//On crée un socket Multicast pour écouter sur le port MulticastSocket s = new MulticastSocket(1234);
//Joindre un groupe multicast
s.joinGroup(InetAddress.getByName("237.3.3.1");
//Réception du packet s.receive(packet);
ult icas t Rece iv er(se r v e ur)
s.receive(packet);
System.out.println("from: " + packet.getAddress());
System.out.println("Message: " + packet.getData());
//Laisser le groupe multicast
s.leaveGroup(InetAddress.getByName(" 237.3.3.1 "));
//Fermeture du socket s.close();