0% ont trouvé ce document utile (0 vote)
82 vues14 pages

Programmation UDP en Java : Guide API

Ce document décrit l'API Java pour la transmission de paquets UDP. Il présente les classes DatagramSocket et DatagramPacket pour la réception et l'envoi de paquets, ainsi que des exemples de code serveur et client.

Transféré par

ram ezi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
82 vues14 pages

Programmation UDP en Java : Guide API

Ce document décrit l'API Java pour la transmission de paquets UDP. Il présente les classes DatagramSocket et DatagramPacket pour la réception et l'envoi de paquets, ainsi que des exemples de code serveur et client.

Transféré par

ram ezi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation Réseau

API Java UDP

[Link]@[Link]
!
UFR Informatique
!
2013-2014
API Java

La transmission de paquets en Java


• pré-requis : le package [Link]

• toujours dans [Link] on trouve les


classes :

• DatagramSocket
• DatagramPacket

2
API Java

• la classe DatagramSocket représente un


point de réception ou un point d’envoi

• pour la réception d’un paquet, il est


nécessaire d’attacher la socket à un port
donné sur une adresse (ou toutes) de la
machine

• soit en construisant une socket attachée

• soit en construisant une socket puis en


l’attachant

3
API Java

• les principaux constructeurs sont :

• DatagramSocket(int port);

• DatagramSocket(SocketAddress sa);

• DatagramSocket(int port,
InetAdress adresse);

4
API Java

• DatagramSocket(int port);

• permet de construire une socket pour


réception de paquets attachée au port
donné sur toutes les adresses de la
machine

• les autres constructeurs permettent de


spécifier l’adresse de l’attachement en
particulier

5
API Java

• l’attachement d’une socket non déjà attachée


s’effectue par un appel à

void bind(SocketAddress adresse);

• où la classe SocketAddress est abstraite;


mais possède une sous-classe concrète
InetSocketAddress :

• InetSocketAddress(int port);

• InetSocketAddress(String nom,
int port)

6
API Java

• on notera que si l’on souhaite réaliser des


résolutions de nom, la classe InetAddress
possède différentes méthodes statiques
utilisables à cette fin :

• InetAddress getByName(String nom);

• InetAddress []getAllByName(String nom);

• …

7
API Java

• la réception (bloquante) d’un paquet


s’effectue par appel à la méthode

void receive(DatagramPacket paquet);

• où la classe DatagramPacket représente un


message envoyé

8
API Java

• la classe DatagramPacket possède (entre


autres) le constructeur

DatagramPacket(byte [],int longueur);

• et les méthodes

byte [] getData();

int getLength();

int getPort();

InetAddress getAddress();
9
API Java

• pour l’envoi d’un paquet, il n’est pas


nécessaire d’attacher la socket qui peut être
simplement construite à l’aide de

DatagramSocket();

• l’envoi s’effectue par appel à

void send(DatagramPacket paquet);

• où le paquet doit désigner la destination du


message…

10
API Java

• dans ce cas le DatagramPacket peut être


construit par emploi de

DatagramPacket(byte []data,
int longueur,
SocketAddress destination);

DatagramPacket(byte []data,
int longueur,
InetAddress addresse,
int port);

11
API Java

• Attention, on notera que si l’envoi réussit,


cela ne constitue en AUCUN cas une preuve
de bonne réception...

• dans le mode paquet, les paquet peuvent


être perdus…

• pas de receveur ou receveur non


atteignable

• trop-plein d’envoi

• ou peuvent se doubler…
12
import [Link].*;
!
public class Serveur {
public static void main(String []args) {
try {
DatagramSocket s = new DatagramSocket(5678);
byte []data = new byte[100];
DatagramPacket paquet = new DatagramPacket(data,[Link]);
while (true) {
[Link](paquet);
String st = new String([Link](),0,[Link]());
[Link]("J'ai reçu ["+st+"]");
[Link](" depuis la machine "+
[Link]().getCanonicalHostName()+
[Link]());
}
} catch(Exception ex) {
[Link]();
[Link](1);
}
}
}
13
import [Link].*;
!
public class Client {
public static void main(String []args) {
try {
DatagramSocket s = new DatagramSocket();
byte []data = args[0].getBytes();
InetSocketAddress sa = new InetSocketAddress("localhost",5678);
DatagramPacket paquet = new DatagramPacket(data,[Link],sa);
[Link](paquet);
} catch(Exception ex) {
[Link]();
[Link](1);
}
}
}

14

Vous aimerez peut-être aussi