Un programme serveur client en mode connecté (sockets et
TCP)
Dans ce TP nous étudions le concept de socket exprimé en langage Java et nous développons une
application simple type client-serveur.
Socket client - programme client.
Dans le programme ci-dessous nous créons un socket client (new Socket(“oak”,7)) qui se connecte au
serveur “echo” (service 7) d’une machine UNIX/LINUX en mode serveur accessible sur le réseau.
echoSocket = new Socket("serveur", 7); // ou adresse IP
out = new PrintWriter(echoSocket.getOutputStream(),true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
La connexion est ensuite utilisée pour l’envoi et la lecture de la réponse sur le serveur.
Ces opérations sont effectuées sur les flots in
et out.
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
Socket serveur - programme serveur.
Le serveur utilise un socket pré-définie comme ServerSocket. Le ServerSocket attend une connexion,
demandée par le client, sur la méthode accept().
try {
serverSocket = new ServerSocket(8888);
} catch (IOException e) {
System.out.println("Could not listen on port: 8888");
System.exit(-1);}
et
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept(); // clientSocket parameters
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);}