Exemples Java - Exemple de communication ServerSocket et Socket
L'exemple suivant montre comment le client envoie un message au serveur, le serveur reçoit le message et lit la sortie, puis l'écrit au client, et le client reçoit la sortie.
1. Configurer le côté serveur
- Le serveur établit une ServerSocket de communication
- Le serveur crée une Socket pour accepter les connexions client
- Créer un flux d'entrée IO pour lire les données envoyées par le client
- Créer un flux de sortie IO pour envoyer des messages de données au client
Code côté serveur :
Fichier Server.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("Démarrage du serveur....");
Socket s = ss.accept();
System.out.println("Client :"+s.getInetAddress().getLocalHost()+"Connecté au serveur");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//Lire le message envoyé par le client
String mess = br.readLine();
System.out.println("Client:"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
La sortie de l'exécution du code ci-dessus est :
Start server....
2. Configurer le côté client
- Créer une communication Socket, définir l'IP et le port du serveur de communication
- Créer un flux de sortie IO pour envoyer des messages de données au serveur
- Créer un flux d'entrée d'E/S pour lire les messages de données envoyés par le serveur
Code côté client :
Fichier Client.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8888);
//Construire les E/S
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//Envoyer un message côté serveur
bw.write("Tester la communication entre le client et le serveur ; le serveur reçoit le message et le renvoie au client\n");
bw.flush();
//Lire le message renvoyé par le serveur
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("Server:"+mess);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
La sortie de l'exécution du code ci-dessus est :
Server: Testing communication between client and server; the server receives the message and returns it to the client.Autres extensions