Cree un servidor de red en el lenguaje Java para realizar la comunicación entre el cliente y el servidor, y tenga en cuenta que el cliente tiene hilos independientes y no interfiere entre sí.
Pasos básicos para aplicar múltiples subprocesos para realizar la comunicación entre servidor y múltiples subprocesos
Servidor servidor.java
paquete test.concurrent.socket; import java.io.*; import java.net.inetaddress; import java.net.serversocket; import java.net.socket; /*** Creado por Dong el 15-6-22. * Comunicación de socket basada en el protocolo TCP, implementa el inicio de sesión del usuario* Lado del servidor*/Public Class Server {public static void main (String [] args) {try {// 1. Cree un socket del lado del servidor, es decir, Serversocket, especifique el puerto unido y escuche este puerto Serversocket Serversocket = new ServerSocket (8888); Socket de socket = nulo; // Registre el número de clientes int count = 0; System.out.println ("*** El servidor está a punto de comenzar, esperando el enlace del cliente ***"); // bucle Escuchar para esperar el enlace del cliente mientras (verdadero) {// llamando al método Acept () para comenzar a escuchar, esperando el enlace del cliente Socket = Serversocket.accept (); // Creación de un nuevo hilo ServerThread ServerThread = nuevo ServerThread (Socket); // Iniciar Thread ServerThread.start (); contar ++; // busca el número de clientes System.out.println ("Número de clientes:" + Count); Dirección inetaddress = socket.getInetAddress (); System.out.println ("La IP del cliente actual:" + dirección.gethostaddress ()); }} catch (ioException e) {E.PrintStackTrace (); }}} Class de procesamiento de subprocesos del lado del servidor ServerThread.java
paquete test.concurrent.socket; import java.io.*; import java.net.socket; /*** Creado por Dong el 15-6-22. * La clase de procesamiento de subproceso del lado del servidor*/public class ServerThread extiende el hilo {// socket socket socket = null; Public ServerThread (Socket Socket) {this.socket = Socket; } // La operación ejecutada por el subproceso responde a la solicitud del cliente Void run () {inputStream is = null; InputStreamReader isr = null; BufferedReader BR = NULL; OutputStream OS = NULL; PrintWriter pw = null; Pruebe {// Obtenga una secuencia de entrada y lea la información del cliente es = Socket.getInputStream (); isr = new InputStreamReader (is); // Convertir las transmisiones de bytes en transmisiones de caracteres Br = nuevo BufferedReader (ISR); // Agregar info de cadena buffered = null; // Datos de lectura de bucle while ((info = br.readline ())! = Null) {system.out.println ("Soy el servidor, y el cliente dijo:" +info); } socket.shutdownInput (); // Cierre la secuencia de entrada // Obtener la transmisión de salida en respuesta a la solicitud del cliente OS = Socket.getOutputStream (); PW = nuevo PrintWriter (OS); // empaquetado como transmisión de impresión pw.write ("bienvenido"); pw.flush (); // Salida en caché} Catch (IOException e) {E.PrintStackTrace (); } Finalmente {try {// cerrar el recurso if (pw! = null) pw.close (); if (os! = null) os.close (); if (is! = null) is.close (); if (br! = null) br.close (); if (Socket! = NULL) Socket.Close (); } catch (ioException e) {E.PrintStackTrace (); }}}} Client.java
paquete test.concurrent.socket; import java.io.*; import java.net.socket; /*** Creado por Dong el 15-6-22. * Client*/public class Client {public static void main (string [] args) {try {// 1. Crear socket de cliente, especificar el número de puerto del servidor y el socket de direcciones = nuevo socket ("localhost", 8888); // 2. Obtenga la transmisión de salida y envíe información al servidor OutputStream OS = Socket.getOutputStream (); // Salida de byte Stream PrintWriter PW = New PrintWriter (OS); // Envuelve la transmisión de salida como una transmisión de impresión pw.write ("Nombre de usuario: Tom; contraseña: 456"); pw.flush (); Socket.shutdownOutput (); // Cerrar la transmisión de salida InputStream es = Socket.getInputStream (); InputStreamReader isr = new InputStreamReader (is); BufferedReader BR = New BufferedReader (ISR); String info = null; // Leer while ((info = br.readline ())! = Null) {system.out.println ("Soy el cliente: el servidor dice:" + info); } br.close (); is.close (); isr.close (); pw.close (); os.close (); socket.close (); } catch (ioException e) {E.PrintStackTrace (); }}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.