14
Développement d’application Développement d’application client/serveur client/serveur Zouhair ELHADARI www.hadari.jimdo.com Centre de BTS Dakhla 2 ème année BTS DSI

Développement d’application client/serveur

  • Upload
    others

  • View
    9

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Développement d’application client/serveur

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

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

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

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

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

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

//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

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

//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

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

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

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

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

Fin du Fin du 22èmeème partiepartie

2ème année BTS DSI Prof:EL HADARI zouhair 14