Вы находитесь на странице: 1из 5



Programmation avec les Sockets


2
 % , 
   
     " # -

 
    -  . /

 

  socket

  

   
 Une interface (sorte de "porte")
D’après le livre :
          au niveau du poste local,
    créée par l'application,
Analyse structurée des réseaux
      
! controllée par le système
Jim Kurose, Keith Ross  " # par laquelle des processus peuvent à la fois
Pearson Education    $
  # 
 envoyer et reçevoir des message
   #    % vers/depuis d'autres processus
  #   & ' ()*
Adaptation : AbdelAli.ED-DBALI@univ-orleans.fr   #  & ' (+)*

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 

Programmation Sockets avec TCP Programmation Sockets avec TCP


%         
/    0  
     2 
      
  
    ()  +)*  #  +)
 #     #
        
 #  +)%  &  & '
/
       
 #
 

 #
   -  # 

/'
1 
 
   .      
   #
  #         #
   - 
 ( * -     #      
      
    
   
 !    
Controllé par 0      # % (& 3   4 5  3   *
Controllé par processus le développeur
le développeur processus de l'application
     
de l'application socket +)
socket
TCP avec
TCP avec Controllé par   &  /
 )    
Controllé par
buffers,
buffers, le système
  
  

le système
variables
internet variables d'exploitation  #
d'exploitation
 2 
      %
client ou
 +)
  ' 
client ou   #  +)

serveur
serveur  #

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 
Jargon : « Stream » (flux) Programmation Sockets avec TCP

7
/  
    (& *    
  6  -  "   " # %

 "#      *       38
 
      (& 
/ * 3 .   
/  /  

(inFromUser

   (#   *  * /#   # # 
  (outToServer
       (& 
   *  3 .   

   (   *  *
9*   #    38
  

4*   # #   38 
:   /#   
*      ( && 3*  38

&
   
(inFromServer  *

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 

TCP: interaction des sockets client/serveur Exemple: client Java (TCP)

import java.io.*;
import java.net.*;
class ClientTCP {

public static void main(String argv[]) throws Exception


{
String phrase;
String phraseModifiee;
Créer
le flux d'entrée BufferedReader entreeDepuisUtilisateur =
new BufferedReader(new InputStreamReader(System.in));
Créer
Socket socketClient = new Socket("hostname", 6789);
la socket client,
la connecter au serveur
DataOutputStream sortieVersServeur =
Créer new DataOutputStream(socketClient.getOutputStream());
le flux de sortie
attaché à la socket

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 
Exemple: client Java (TCP) ... Exemple: serveur Java (TCP)

Créer import java.io.*;


le flux d'entrée BufferedReader entreeDepuisServeur = import java.net.*;
attaché à la socket new BufferedReader(new
InputStreamReader(socketClient.getInputStream())); class ServeurTCP {

public static void main(String argv[]) throws Exception


sentence = entreeDepuisUtilisateur.readLine();
Envoyer la chaîne {
String phraseClient;
au serveur sortieVersServeur.writeBytes(phrase + '\n'); Créer une socket
String phraseMajuscule;
d'écoute sur
phraseModifiee = entreeDepuisServeur.readLine(); le port 6789 ServerSocket socketEcoute = new ServerSocket(6789);
Lire la chaîne
depuis le serveur while(true) { // boucle infinie
System.out.println("RECU DU SERVEUR: " + phraseModifiee);
Attendre une connexion
Socket socketConnexion = socketEcoute.accept();
socketClient.close(); d'un client
BufferedReader entreeDepuisClient =
} Créer le flux new BufferedReader(new
} d'entrée attaché InputStreamReader(socketConnexion.getInputStream()));
à la socket

Couche Application : programmation avec les Sockets Couche Application : programmation avec les Sockets 

Example: Java server (TCP), cont Programmation Sockets avec UDP

)% 
 ; <  
      #
 
  !
  
Créer le flux de sortie
attaché à la socket DataOutputStream sortieVersClient =
 /
 
new DataOutputStream(connectionSocket.getOutputStream());    /
 )
Lire la chaîne
phraseClient = entreeDepuisClient.readLine();
   
 
  
depuis la socket

 3-  - 
phraseMajuscule = phraseClient.toUpperCase() + '\n';    #
    
Ecrire au client sortieVersClient.writeBytes(phraseMajuscule); /
 )    

} // fin boucle (repartir et attendre une nouvelle connexion)
/

  
} -  = 
}
)% 
   
  1  = 
 


    Intéraction

 client/serveur UDP

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 
Client Java (UDP) Exemple: client Java (UDP)

Entrée: recevoir des paquets import java.io.*;


import java.net.*;
(TCP reçoit des flux d'octets
“byte stream”) class ClientUDP {
public static void main(String args[]) throws Exception
Créer {
le flux d'entrée
BufferedReader entreeDepuisUtilisateur =
new BufferedReader(new InputStreamReader(System.in));
Créer la socket
client DatagramSocket socketClient = new DatagramSocket();

Traduire le nom InetAddress AdresseIP = InetAddress.getByName("hostname");


du poste en adresse IP
utilisant DNS byte[] donneeEnvoyee = new byte[1024];
Sortie: envoyer des paquets
byte[] donneeRecue = new byte[1024];
(TCP envoi des flux d'octets
String phrase = entreeDepuisUtilisateur.readLine();
“byte stream”)
sendData = phrase.getBytes();

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 

Exemple: client Java (UDP) ... Exemple: serveur Java (UDP)

Créer le datagramme avec


import java.io.*;
donnée à envoyer, DatagramPacket sendPacket = import java.net.*;
sa longueur, adr IP et port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
class ServeurUDP {
Envoyer le datagramme clientSocket.send(sendPacket); public static void main(String args[]) throws Exception
au serveur Créer {
DatagramPacket receivePacket = la socket datagramme
new DatagramPacket(receiveData, receiveData.length); DatagramSocket socketServeur = new DatagramSocket(9876);
sur le port 9876
Lire le datagramme
depuis serveur clientSocket.receive(receivePacket); byte[] donneeRecue = new byte[1024];
byte[] donneeEnvoyee = new byte[1024];
String modifiedSentence =
new String(receivePacket.getData()); while(true)
Créer de l'espace {
System.out.println("FROM SERVER:" + modifiedSentence);
pour le datagramme reçu
clientSocket.close(); DatagramPacket paquetRecu =
} new DatagramPacket(donneeRecue, donneeRecue.length);
} Recevoir serverSocket.receive(paquetRecu);
le datagramme

Couche Application : programmation avec les Sockets  Couche Application : programmation avec les Sockets 
Exemple: serveur Java (UDP) ...

Extraire l'adresse IP,


String phrase = new String(paquetRecu.getData());
numéro de port de
l'expéditeur InetAddress adresseIP = paquetRecu.getAddress();

int port = paquetRecu.getPort();

String phraseMajuscule = phrase.toUpperCase();

donneeEnvoyee = phraseMajuscule.getBytes();
Créer le datagramme
DatagramPacket paquetEnvoye =
à envoyer au client new DatagramPacket(donneeEnvoyee,
donneeEnvoyee.length, adresseIP,
port);
Ecrire le datagramme
socketServeur.send(paquetEnvoye);
sur la socket
} // fin boucle (repartir en attente d'un autre datagramme)
}
}

Couche Application : programmation avec les Sockets 

Вам также может понравиться