Développement d’application client/serveur
Transcript of Développement d’application client/serveur
![Page 1: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/1.jpg)
Développement d’application Développement d’application client/serveurclient/serveur
Zouhair ELHADARIwww.hadari.jimdo.com
Centre de BTS Dakhla
2ème année BTS DSI
![Page 2: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/2.jpg)
Chapitre 5Chapitre 5Programmation réseau en JAVAProgrammation réseau en JAVAProgrammation réseau en JAVAProgrammation réseau en JAVA
2ème année BTS DSI Prof:EL HADARI zouhair 2
![Page 3: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/3.jpg)
Partie 2:Partie 2:La programmation réseau enLa programmation réseau enLa programmation réseau enLa programmation réseau en
mode nonmode non--connectéconnecté(UDP) (UDP)
2ème année BTS DSI Prof:EL HADARI zouhair 3
![Page 4: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/4.jpg)
Utilisation des sockets Datagrams
Quelles classes utiliser ?
il faut utiliser les classes DatagramPacket et DatagramSocketDatagramSocket
Ces objets sont initialisés différemment selon qu’ils sont utilisés pour envoyer ou recevoir des paquets
2ème année BTS DSI Prof:EL HADARI zouhair 4
![Page 5: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/5.jpg)
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ème année BTS DSI Prof:EL HADARI zouhair 5
![Page 6: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/6.jpg)
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é
2ème année BTS DSI Prof:EL HADARI zouhair 6
![Page 7: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/7.jpg)
//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();
2ème année BTS DSI Prof:EL HADARI zouhair 7
![Page 8: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/8.jpg)
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
2ème année BTS DSI Prof:EL HADARI zouhair 8
![Page 9: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/9.jpg)
//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();
2ème année BTS DSI Prof:EL HADARI zouhair 9
![Page 10: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/10.jpg)
Mu
ltic
ast
sen
der(
clien
t)
//Machine destinataire
InetAddress 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);
Mu
ltic
ast
sen
der(
clien
t)
//Création du socket Multicast et envoi du paquet
MulticastSocket s = new MulticastSocket();
s.send(packet,(byte)1);
//Fermeture du socket
s.close();
2ème année BTS DSI Prof:EL HADARI zouhair 10
![Page 11: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/11.jpg)
Mu
ltic
ast
Rece
iver(
serv
eu
r)
//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);
Mu
ltic
ast
Rece
iver(
serv
eu
r)
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();
2ème année BTS DSI Prof:EL HADARI zouhair 11
![Page 12: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/12.jpg)
Conversion Object <-> byte[]
Pour émettre et recevoir n'importe quel objet via des sockets UDP
En écriture : conversion de Object en byte[ ]
ByteArrayOutputStream byteStream =
new ByteArrayOutputStream();new ByteArrayOutputStream();
ObjectOutputStream objectStream =
new ObjectOutputStream(byteStream);
objectStream.writeObject(object);
byte[ ] byteArray = byteStream.toByteArray();
2ème année BTS DSI Prof:EL HADARI zouhair 12
![Page 13: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/13.jpg)
En lecture : conversion de byte[] en Object
ByteArrayInputStream byteStream =
new ByteArrayInputStream(byteArray);new ByteArrayInputStream(byteArray);
ObjectInputStream objectStream =
new ObjectInputStream(byteStream);
object = objectStream.readObject();
2ème année BTS DSI Prof:EL HADARI zouhair 13
![Page 14: Développement d’application client/serveur](https://reader036.fdocument.pub/reader036/viewer/2022062412/62ad08b4eac98628b1217c18/html5/thumbnails/14.jpg)
Fin du Fin du 22èmeème partiepartie
2ème année BTS DSI Prof:EL HADARI zouhair 14