Serveur TCP :
import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public final class MainServer { static PrintStream out = System.out; public static void main(String[] args) throws ClassNotFoundException { int port = 8888; ServerSocket socket = null; try { // Création de la socket (en écoute sur le port 8888) socket = new ServerSocket(port); } catch (IOException e) { e.printStackTrace(); } out.println("Listening on port " + port + "..."); boolean running = true; Socket client = null; while (running) { try { // Attend la connexion d'un client client = socket.accept(); out.println("New client..."); // Flux d'entrée et sortie ObjectInputStream inputStream = new ObjectInputStream( client.getInputStream()); ObjectOutputStream outputStream = new ObjectOutputStream( client.getOutputStream()); // Lecture du message du client String message = (String) inputStream.readObject(); out.println("Message from " + client.getInetAddress() + ": " + message); // Traitement de la requête if (!message.equals("stop")) { outputStream.writeObject("Yes, I'm alive!"); } else { running = false; outputStream.writeObject("Ok, I'm shutting down."); } // Fermeture des flux inputStream.close(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { // Fermeture de la connexion client if (client != null) { client.close(); } } catch (IOException e) { e.printStackTrace(); } } } try { // Fermeture de la socket socket.close(); out.println("Shutting down..."); } catch (IOException e) { e.printStackTrace(); } } }
Client TCP :
import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; public final class MainClient { static PrintStream out = System.out; public static void main(String[] args) throws ClassNotFoundException { if (args.length != 2) { out.println("Usage: java MainClient [server address] [message]"); System.exit(1); } Socket socket = null; try { // Connexion au serveur socket = new Socket(args[0], 8888); // Flux sortie ObjectOutputStream outputStream = new ObjectOutputStream( socket.getOutputStream()); // Envoi du message au serveur outputStream.writeObject(args[1]); // Flux d'entrée ObjectInputStream inputStream = new ObjectInputStream( socket.getInputStream()); // Lecture de la réponse String message = (String) inputStream.readObject(); out.println("Response from " + socket.getInetAddress() + ": " + message); // Fermeture des flux outputStream.close(); inputStream.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { // Fermeture de la connexion réseau if (socket != null) { socket.close(); } } catch (IOException e) { e.printStackTrace(); } } } }