• Aucun résultat trouvé

Développement d’application Développement d’application client/serveur client/serveur

N/A
N/A
Protected

Academic year: 2022

Partager "Développement d’application Développement d’application client/serveur client/serveur"

Copied!
14
0
0

Texte intégral

(1)

Développement d’application Développement d’application

client/serveur client/serveur

Zouhair ELHADARI

www.hadari.jimdo.com

Centre de BTS Dakhla

(2)

Chapitre 5 Chapitre 5

Programmation réseau en JAVA

Programmation réseau en JAVA

Programmation réseau en JAVA

Programmation réseau en JAVA

(3)

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)

(4)

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

(5)

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

(6)

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é

(7)

//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();

(8)

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

(9)

//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();

(10)

c ast sen der(cli e nt )

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

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);

(11)

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();

(12)

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);

(13)

En lecture : conversion de byte[] en Object ByteArrayInputStream byteStream =

new ByteArrayInputStream(byteArray);

new ByteArrayInputStream(byteArray);

ObjectInputStream objectStream = new ObjectInputStream(byteStream);

object = objectStream.readObject();

(14)

Fin du

Fin du 2 2 ème ème partie partie

Références

Documents relatifs

En tapant «http://www.google.fr», votre machine va chercher à entrer en communication avec le serveur portant le nom «www.google.fr» (en fait c'est plus compliqué,

Le poste client contient la logique fonctionnelle de base et fait appel au serveur pour effectuer les traitements en utilisant des services extérieurs. Elle

Le module de gestion des données peut être hébergé par un serveur distant (SGBD, serveur web). Le module de gestion de

• avec connexion / sans connexion (ou avec session): nécessité (/ou non) d'établir une connexion entre le client et le serveur. 11 2ème année BTS DSI Prof:EL

 Caractériser cette socket en terme de communication : -au moins un numéro de port (associé au service) -éventuellement une adresse IP (interface cible).  Lui permettre de

Serveur en gestion multi--clients clients en en mode connecté. mode

Ceci indique à quel point de l'espace supplémentaire dans la mise en page doit être alloué à la vue. 10

◮ Réponse : message transmis par un serveur à un client suite à l’exécution d’une opération, contenant le résultat