Cet exemple ne montre que des fonctions simples, et le code n'est pas rigoureux, mais explique seulement comment le client peut implémenter la connexion de code simple au serveur.
Le code teste l'environnement de compilation et d'exécution sous l'outil Eclipse intégré comme indiqué dans la figure ci-dessous:
Client echoclient.java Code:
package com.zhengzzz.echo; importer java.io.bufferederader; import java.io.ioException; import java.io.inputstreamreader; import java.io.printwriter; import java.net.socket; import java.net.unknownhostexception; classe java.net.socket; import java.net.unknownhostexception; ECHOC {socket privé; IoException e) {e.PrintStackTrace ();}} public void client () {try {BufferedReader br = new BufferedReader (new InputStreamReader (socket.getInputStream ()); TRUE); println (br.readline ()); main (String [] args) {new Echoc (). Client ();Code de serveur echoserver.java:
package com.zhengzzz.echo; importer java.io.bufferederader; import java.io.ioException; import java.io.inputStreamReader; import java.io.printwriter; import java.net.serversocket; import java.net.socket; class; Echos {private serversocket SERVERSET; socket = serversocket.Accept (); )); ("--->" + linestr);}} catch (ioException e) {System.out.println ("Connexion déconnectée: (");}}} classe publique Echoserver {public static void main (String [] ar gs) {new Echos (). Server ();Mes résultats de débogage direct sous l'outil Eclipse sont les suivants:
Jetons un coup d'œil à un exemple de communication de socket Java de niveau Helloword. Processus de communication:
Démarrez d'abord le côté serveur et entrez une boucle morte pour continuer à écouter s'il existe une demande de connexion pour un certain port. Exécutez ensuite le côté client, le client émet une demande de connexion et le serveur écoute la demande et renvoie un message d'acceptation au client. à d'autres demandes dans une boucle morte. Une fois que le client est entré dans la chaîne, appuyez sur Entrée pour envoyer des données au serveur. Le serveur lit les données et répond aux données du client. Une fois la demande traitée cette fois, le thread démarré disparaît. Si le client reçoit des données de retour autres que "OK", il enverra à nouveau la demande de connexion et enverra les données, et le serveur recommencera un thread pour que la connexion réponde. . . Le client sort jusqu'à ce que les données de retour reçues par le client soient "OK".
Code source du serveur:
package com.defonds.socket.begin; Socket; public class Server {public static final int Port = 12345; // le numéro de port de public static public void main (String [] args) {System.out.println ("startup de serveur ... / n"); Server = new Server (); Le client a été connecté Connect Socket Client = SERVERSOCKET.ACcept (); ));}} Private Class HandlerThread implémente Runnable {Socket privé; Data DatainputStream Input = new DatainputStream (socket.getInputStream ()); Data System.out. "); // Envoyer une ligne entrée par la chaîne du clavier S = new BufferedReader (new InputStreamReader (System.in)). ReadLine (); out.writeUtf (s); out.close (); input.close (); } Catch (EXC Episode E) {System .out.println ("Server Exception Exception:" + e.getMessage ()); Exception e) {socket = null; System .out.println ("Server enfin l'exception:" + e.getMessage ());Code source du client:
package com.defonds.socket.begin; Socket; classe publique Client {public static final string ip_addr = "localhost"; // Adresse du serveur public statique final int Port = 12345; // Numéro de port de serveur public STATIC VOID MAIN (ST RING [] Args) {System.out.println (Client démarre ... "); {// Créez une prise de flux et connectez-la au numéro de port spécifié sur le socket hôte spécifié = new socket (ip_addr, port); // Envoi des données au serveur DataoutputStream OUT = NOUVEAU DATAUTUTSTREAM (socket.getoutputStream ()); readLine (); ".equals (ret)) {System.out.println (" Client fermera la connexion "); thread.sleep (500); break;} out.close (); input.close ();} catch (exception e ) {System.out.println ("Exception client:" + e.getMessage ());} Enfin {if (socket! = Null) {try {socket.close (); ;Remarque: Lorsque le flux de sortie de socket écrit la méthode de données est WriteUtf, le flux d'entrée doit utiliser readUtf pour lire les données connexes. Sinon, une exception EOFException sera lancée.