Ceci est un exemple de base de serveur TCP. Ce serveur ne fait rien, à vous de coder la partie manquante (traitement).
class ServeurTcp { void servir(int noPort) { try { ServerSocket serveur = new ServerSocket(noPort); /* * La variable "enService" contrôle la boucle principale du serveur * qui se termine avec l'application. À vous de trouver une façon * d'en changer la valeur. */ boolean enService = true; while (enService) { /* * Le programme est ici bloqué dans l'attente d'une connexion. La * connexion aura pour effet de créer un socket (variable "client") * branché à l'application distante. */ Socket client = serveur.accept(); /* * Création des flux d'entrée-sortie pour échanger de l'information * avec le client en format binaire. On utilisera (mais il peut y * en avoir d'autres plus appropriées) les méthodes "readByte" pour * lire et "writeByte" pour écrire. * * * DataInputStream in = * new DataInputStream(client.getInputStream()); * * DataOutputStream out = * new DataOutputStream(client.getOutputStream()); */ /* * Création des flux d'entrée-sortie pour échanger de l'information * avec le client en format texte. On utilisera les méthodes * "readLine" pour lire et "println" pour écrire. */ BufferedReader reader = new BufferedReader( new InputStreamReader(client.getInputStream())); PrintWriter writer = new PrintWriter( new OutputStreamWriter(client.getOutputStream())); /* * La variable "fini" contrôle la boucle secondaire, celle qui se * se termine avec la déconnexion d'un client. À vous de trouver * une façon d'en changer la valeur. */ boolean fini = false; while (!fini) { /* * Traitement (lecture des requêtes du client et écriture des * réponses du serveur). */ } /* * Libération des ressources à la fin du traitement d'un client. */ reader.close(); writer.close(); client.close(); } serveur.close(); } catch (IOException ioe) { /* * Ici on choisit de quitter l'application, mais il y aurait peut-être * moyen de traiter l'exception. */ System.err.println("Erreur d'entre-sortie"); System.exit(1); } } /* * Point d'entrée de l'application, cette méthode fait trois choses : * 1) valide les paramètres de la ligne de commande; * 2) crée une instance de la classe courante; * 3) appelle une méthode de l'objet pour démarrer le traitement. */ public static void main(String[] args) { switch (args.length) { case 0: System.err.println("Vous devez specifier un numero de port"); break; case 1: try { int noPort = Integer.parseInt(args[0]); if ((noPort >= 0) && (noPort <= 65537)) { new ServeurTcp().servir(noPort); } else { System.err.println("Le numero de port est hors intervale"); } } catch (NumberFormatException nfe) { System.err.println( "Le numero de port doit etre un nombre entier"); } break; default: System.err.println("Il y a trop de parametres"); break; } } }