Crie um servidor de rede no idioma Java para realizar a comunicação entre o cliente e o servidor e perceba que o cliente possui threads independentes e não interfere um com o outro.
Etapas básicas para aplicar multi-threading para realizar a comunicação entre servidor e multi-threading
Servidor servidor.java
pacote test.concurrent.socket; importar java.io.*; importar java.net.inetaddress; importar java.net.serversocket; importar java.net.socket; /*** Criado por Dong em 15-6-22. * Comunicação de soquete Com base no protocolo TCP, implemente o login do usuário* lado do servidor*/public class Server {public static void main (string [] args) {try {// 1. Crie um soquete do lado do servidor, ou seja, ServerSocket, especifique a porta ligada e ouça este port serverSocket ServerSocket = new ServerSocket (8888); Soquete soquete = nulo; // registra o número de clientes int conting = 0; System.out.println ("*** O servidor está prestes a começar, aguardando o link *** do cliente"); // loop Ouça aguardar o link do cliente enquanto (true) {// chamando o método aceit () para começar a ouvir, aguardando o link soket do cliente = serversocket.accept (); // criando um novo Thread ServerThread ServerThread = new ServerThread (soquete); // Iniciando Thread ServerThread.start (); contagem ++; // Pesquise o número de clientes System.out.println ("Número de clientes:" + contagem); InetAddress endereço = soquete.getineTAddress (); System.out.println ("O IP do cliente atual:" + endereço.gethostAddress ()); }} catch (ioexception e) {e.printStackTrace (); }}} Classe de processamento de threads do lado do servidor ServerThread.java
pacote test.concurrent.socket; importar java.io.*; importar java.net.socket; /*** Criado por Dong em 15-6-22. * Classe de processamento de threads do lado do servidor*/classe pública ServerThread estende o thread {// soquete de soquete = null; public ServerThread (soquete) {this.socket = soket; } // A operação executada pelo thread responde à solicitação do cliente public void run () {inputStream é = null; InputStreamReader isr = null; BufferErader Br = null; OutputStream OS = NULL; PrintWriter pw = null; tente {// Obtenha um fluxo de entrada e leia as informações do cliente é = soket.getInputStream (); isr = new inputStreamReader (IS); // converte fluxos de bytes em fluxos de caracteres BR = new BufferredReader (ISR); // Adicionar informações de sequência em buffer = null; // loop lendo dados while ((info = br.readline ())! = Null) {System.out.println ("Eu sou o servidor, e o cliente disse:" +info); } soket.shutdownInput (); // Fechar o fluxo de entrada // Obtenha o fluxo de saída em resposta ao solicitação OS = soket.getOuttutStream (); pw = new PrintWriter (OS); // embalado como fluxo de impressão PW.WRITE ("Welcome"); pw.flush (); // saída em cache} catch (ioexception e) {e.printStackTrace (); } finalmente {tente {// feche o recurso se (pw! = null) pw.close (); if (OS! = NULL) OS.Close (); if (é! = null) is.close (); if (br! = null) br.close (); if (soquete! = NULL) soquete.close (); } catch (ioexception e) {e.printStackTrace (); }}}} Client.java
pacote test.concurrent.socket; importar java.io.*; importar java.net.socket; /*** Criado por Dong em 15-6-22. * Client*/public class Client {public static void main (String [] args) {try {// 1. Crie soquete do cliente, especifique o número da porta do servidor e soquete de endereço = novo soquete ("localhost", 8888); // 2. Obtenha o fluxo de saída e envie informações para o servidor outputStream OS = Socket.getOutputStream (); // Stream de saída de byte PrintWriter PW = new PrintWriter (OS); // Enrole o fluxo de saída como um fluxo de impressão PW.WRITE ("Nome de usuário: Tom; senha: 456"); pw.flush (); soket.shutdownOutput (); // Fechar o fluxo de saída inputStream is = socket.getInputStream (); InputStreamReader isr = new InputStreamReader (IS); BufferErader BR = new BufferredReader (ISR); String info = null; // Leia while ((info = Br.readline ())! = Null) {System.out.println ("Eu sou o cliente: o servidor diz:" + info); } Br.Close (); is.close (); isr.close (); pw.close (); os.close (); Socket.Close (); } catch (ioexception e) {e.printStackTrace (); }}}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.