100% ont trouvé ce document utile (1 vote)
227 vues4 pages

TP2 Socket TCP

Ce TP a pour objectif de manipuler la communication client/serveur via les sockets TCP en Java. Il présente les notions de base sur les sockets, puis propose plusieurs exercices pour développer des applications client-serveur simples et itératives/concurrentes échangeant des données via les sockets.

Transféré par

Amel Ben Yaakoub
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
100% ont trouvé ce document utile (1 vote)
227 vues4 pages

TP2 Socket TCP

Ce TP a pour objectif de manipuler la communication client/serveur via les sockets TCP en Java. Il présente les notions de base sur les sockets, puis propose plusieurs exercices pour développer des applications client-serveur simples et itératives/concurrentes échangeant des données via les sockets.

Transféré par

Amel Ben Yaakoub
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
Vous êtes sur la page 1/ 4

Université de Monastir Développement des Applications Réparties

Institut Supérieur d’Informatique Niveau d’étude : L3 Informatique


Et de Mathématiques de Monastir (ISIMM) Année Universitaire : 2022/2023

TP2 : Programmation Répartis avec les sockets TCP

Objectifs du TP :

Ce TP a pour objectif de manipuler la communication client/serveur via les sockets


avec Java.

Les Sockets

Un socket est un point de terminaison dans une communication bidirectionnelle


entre deux programmes fonctionnant sur un réseau. Un socket est associé à un
numéro de port afin que la couche TCP puisse identifier l’application vers laquelle les
données doivent être transmises. En fonctionnement normal, une application serveur
fonctionne sur un ordinateur et possède un socket d’écoute associée à un port
d’écoute. Le serveur attend une demande de connexion de la part d’un client sur ce
port.

Si tout se passe bien, le serveur accepte la connexion. À la suite de cette acceptation,


le serveur crée un nouveau socket associé à un nouveau port appelé Socket
d’échange. Ainsi il pourra communiquer avec le client, tout en continuant l’écoute sur
le socket initial appelé Socket d’écoute en vue d’autres connexions

1. Chaque machine crée un socket,


2. Chaque socket sera associé à un port de sa machine hôte,
3. Les deux sockets seront explicitement connectés si on utilise un protocole en
modeconnecté ...,
4. Chaque machine lit et/ou écrit dans son socket,
5. Les données vont d’un socket à une autre à travers le réseau,
6. Une fois terminé, chaque machine ferme son socket

1
Exercice 1 : copier et exécuter l’exemple de cours.

Coté serveur : Coté client:


import java.net.*; Import java.net.*;
import java.io.*; import java.io.*;
public class import java.util.Scanner;
Serveur1 { public class Client1 {
public static void main(String[] args){ public static void main(String[] args) {
try { try {
ServerSocket ss = new Socket s = new Socket("localhost", 1234);
ServerSocket(1234); InputStream is=s.getInputStream();
System.out.println("J’attends une OutputStream os=s.getOutputStream();
connexion");
Scanner clavier = new Scanner(System.in);
Socket s = ss.accept();
System.out.println("Donner un nombre");
InputStream is=s.getInputStream();
int nb=clavier.nextInt();
OutputStream os=s.getOutputStream();
os.write(nb);
System.out.println("J’attends un
int res = is.read();
nombre");int nb=is.read();
System.out.println("Res ="+res);
int res=nb*3;
os.write(res);
System.out.println("J’envoies la
s.close();
réponse");os.write(res);
} catch (Exception e){ e.printStackTrace();
s.close(); }
ss.close(); }
} catch (Exception e){ e.printStackTrace(); }
}
}
}

2
Exercice 2 :
Coté serveur
import
java.io.*;
import
java.net.*;
import
java.util.Date;

public class TimeServer {

public static void main(String[] args) {

int port = 1234;

try (ServerSocket serverSocket = new ServerSocket(port)) {

System.out.println("le serveur est en écoute en port" + port);

Socket socket = serverSocket.accept(); System.out.println("Un client est

connecté");

OutputStream output = socket.getOutputStream(); PrintWriter writer = new


PrintWriter(output, true);

writer.println(new Date().toString())
socket.close();
serverSocket.close();

} catch (IOException ex) {


System.out.println("Server exception: " + ex.getMessage());ex.printStackTrace();
}
}
}

Coté client:

import
java.net.
*;import
java.io.*
;

3
public class TimeClient {

public static void main(String[] args) {

try (Socket socket = new Socket(localhost,1234)) {

InputStream input = socket.getInputStream(); BufferedReader reader = new


BufferedReader(new
InputStreamReader(input));
String time = reader.readLine();System.out.println(time);
socket.close();
} catch (UnknownHostException ex) {

System.out.println("Server not found: " + ex.getMessage());

} catch (IOException ex) {

System.out.println("I/O error: " + ex.getMessage());


}
}
}

Exercice 3 :

On veut développer une application client/serveur utilisant les sockets TCP. Cette
application permet au serveur de recevoir le nom d’une personne et de renvoyer
au client une chaîne de caractère de la forme
« Bonjour Mr »+str.

Exercice 4 :
Refaire l’exercice précédent mais cette fois en rendant le serveur un serveur
multi-clients itératifs.

Exercice 5 :
Refaire le même exercice mais cette fois pour un serveur multi-clients concurrents

Vous aimerez peut-être aussi