Este ejemplo solo demuestra funciones simples, y el código no es riguroso, pero solo explica cómo el cliente puede implementar un código simple que se conecta al servidor.
El código prueba el entorno de compilación y en ejecución en la herramienta Eclipse integrada como se muestra en la figura a continuación:
Cliente ECHOCLIENT.JAVA:
paquete com.zhengzz.echo; import java.io.bufferedReader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.socket; import java.net.unknownhostException; class; class ECHOC {SOCKET SOCKET; IOException E) {E.PrintStackTrace (); verdadero); println (br.readline ()); Main (String [] args) {new Echoc (). Client ();SERVER ECHOSERVER.Java Código:
paquete com.zhengzz.echo; import java.io.bufferedReader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.serversocket; import java.net.socket; class; ECHOS {Servidor de servidor privado ServerSocket; socket = Serversocket.accept (); )) ("--->" + linest); gs) {new Echos (). Server ();Mis resultados de depuración directa en la herramienta Eclipse son los siguientes:
Echemos un vistazo a un ejemplo de comunicación de socket Java a nivel de Helloword. Proceso de comunicación:
Primero inicie el lado del servidor e ingrese un bucle muerto para seguir escuchando si hay una solicitud de conexión para un puerto determinado. Luego ejecute el lado del cliente, el cliente emite una solicitud de conexión y el servidor escucha la solicitud y envía un mensaje de aceptación al cliente. a otras solicitudes en un bucle muerto. Después de que el cliente ingrese a la cadena, presione ENTER para enviar datos al servidor. El servidor lee los datos y responde a los datos del cliente. Después de procesar la solicitud esta vez, el hilo iniciado desaparece. Si el cliente recibe datos de devolución que no sean "OK", volverá a enviar la solicitud de conexión y enviará los datos, y el servidor iniciará un hilo nuevamente para que la conexión responda. . . El cliente sale hasta que los datos de devolución recibidos por el cliente están "OK".
Código fuente del servidor:
paquete com.defonds.socket.begin; Socket; servidor = nuevo servidor (); El cliente ha sido conectado Connect Socket Client = Serversocket.accept (); ); Data DataInputStream Input = new DataInputStream (Socket.getInputStream ()); Data System.out. "); // Enviar una línea ingresada por la cadena del teclado S = nuevo BufferedReader (new InputStreamReader (System.in)). Readline (); Out.Writeutf (S); Out.Close (); input.close (); } Catch (EXC Episode E) {System .out.println ("Servidor Ejecutar Excepción:" + E.getMessage ()); Excepción e) {socket = null;Código fuente del cliente:
paquete com.defonds.socket.begin; Socket; Cliente de clase pública {cadena final de la estática pública ip_addr = "localhost"; // Servidor Dirección Public Static Final Int Port = 12345; // Número de puerto de servidor Public static void main (st ring [] args) {System.out.println ("El cliente comienza ..."); {// Cree un socket de transmisión y conéctelo al número de puerto especificado en el host especificado Socket = new Socket (ip_addr, puerto); // Enviar datos al servidor DataOutputStream Out = New DataOutputStream (Socket.getOutputStream ()); readline (); ".equals (ret)) {system.out.println (" El cliente cerrará la conexión "); hilt.sleep (500); break;} out.close (); input.close ();} Catch (Excepción e ) {System.out.println ("Excepción del cliente:" + E.getMessage ()); ;Nota: Cuando la transmisión de salida de socket escribe el método de datos es Writeutf, el flujo de entrada debe usar ReadUTF para leer datos relacionados. De lo contrario, se lanzará una excepción de EOFException.