La communication client serveur TCP/IP Les sockets en Java Sockets avanc´es
Datagrammes
Cˆot´e Client :
1St ring s = " DA TADA TAD TATA " ;
2byt e [] don ne es = s . g e tB yt es ( ) ;
3In etA dd re ss a dr es se = In etA dd res s . ge tByNa me (" le nom de l’hot e " );
4int por t = 55 55;
5Da tag ra m Pa cke t p aq ue t =
6new D at agr am Pa ck et ( d onn ees , d on nee s . len gth , ad resse , p ort ) ;
En r´eception cˆot´e serveur : il faut construire un datagramme c`ad
tableau d’octets qui recevra les donn´ees
1byt e [] donnees = new byte [4000];;
2Da tag ra m Pa cke t d =
3new Da ta gra mP ac ket ( d onnee s , d onn ees . l eng th );
La communication client serveur TCP/IP Les sockets en Java Sockets avanc´es
Socket UDP
Les datagrammes sont ´emis et re¸cus par l’interm´ediaire d’un
objet de la classe DatagramSocket
Cˆot´e client : on utilise un port pour construire le
DatagramSocket, puis la m´ethode send
1Da tag ra m So cke t c li en t = new D a ta gr am S oc ke t ( ) ;
2cl ien t . sen d ( paq uet ) ;
Cˆot´e serveur : le port doit ˆetre pass´e en argument au
constructeur DatagramSocket(int), et la m´ethode receive
remplit le tableau d’octets avec les donn´ees du paquet re¸cu
1Da tag ra m So cke t serveur = new D at ag ra mSo ck et ( p ort ) ;
2se rve ur . re cei ve ( pa que t );
La communication client serveur TCP/IP Les sockets en Java Sockets avanc´es
Serveur ECHO UDP
1import j ava . io .*;
2import ja va . net .*;
3class ServeurEchoUDP {
4pu blic s ta tic voi d ma in ( St rin g [] ar gs )
5throws UnknownHostException , IOException {
6final i nt po rt = 8080 ;
7Da tagr amP ac ket paq uet Requ ete , paq uet Re pon se ;
8Da tag ra m So cke t serveur = new D at ag ra mSo ck et ( p ort ) ;
9byt e [] don nee sRe qu ete = new byt e [4000];
10 while (tr ue ) {
11 paquetRequete = new D ata gr am Pac ke t ( don ne esR equ ete , do nn ee sRe qu et e . len gth ) ;
12 se rve ur . re cei ve ( pa qu etR eq uet e );
13 paquetReponse =
14 new Da tagr amP ac ket ( p aqu et Req uet e . get Dat a () ,
15 pa qu et Req ue te . g etL en gth () ,
16 pa qu et Req ue te . g et Add re ss () ,
17 p aq ue t Re qu et e . g e tP or t () ) ;
18 se rve ur . s end ( p aq uet Re po ns e );
19 }
20 }
21 }
La communication client serveur TCP/IP Les sockets en Java Sockets avanc´es
Client ECHO UDP
1class ClientEchoUDP {
2pu blic s ta tic voi d ma in ( St rin g [] ar gs )
3throws UnknownHostException , IOException {
4St ring nom Hot e = " lo cal hos t ";
5In etAd dre ss a dre sse = Ine tAd dre ss . g etB yNa me ( no mHo te );
6final i nt po rt = 8080 ;
7St rin g re quete , r epo nse ;
8Da tagr amP ac ket paq uet Requ ete , paq uet Re pon se ;
9Da tag ra m So cke t c li en t = new D a ta gr am S oc ke t ( ) ;
10 Bu ffe re d Re ade r e nt re e = new BufferedReader(new I n pu t St re a mR ea de r ( Sy st em . in )
);
11 byt e [] don nee sRe po nse = new byt e [4000];
12 while (!( r equ ete = e ntr ee . re adL in e () ). eq ual s (" END " )) {
13 d on ne e sR eq ue t e = r e que te . g et By te s () ;
14 paquetRequete =new D at agr am Pack et ( donne esReq uete ,
15 d on nee sR eq ue te . l engt h , a dres se , p ort ) ;
16 paquetReponse = new D ata gr am Pac ke t ( don ne esR epo nse , do nn ee sRe po ns e . len gth ) ;
17 cl ien t . sen d ( pa qu etR eq ue te ) ;
18 cl ient . r eceive ( pa que tRe po nse ) ;
19 reponse = new St rin g( pa que tRep ons e . get Dat a ()) ;
20 Sy stem . out . pr in tl n ( pa q ue tRe po nse . g etAdd re ss () + " : " + re po ns e ) ;
21 }
22 c lie nt . cl ose () ;
23 }
24 }