Este artigo compartilha o código relevante para o Java para implementar a função da sala de bate -papo TCPSocket para sua referência. O conteúdo específico é o seguinte
1.tcpSserver.java
importar java.net.*; importar java.io. Servidor privado MyServer = NULL; Lista privada <Soques> clientes = new ArrayList <Socket> (); ExecutorService mexecutorService; public tcpSserver () {try {myServer = new ServerSocket (Serverport); mexecutorService = executores.newcachedthreadpool (); System.out.println ("start:"); Soquete mysocket = null; while (true) {mySocket = myServer.accept (); Clientes.add (mysocket); mexecutorService.execute (novo ThreadServer (mySocket)); }} catch (Exceção e) {e.printStackTrace (); System.Exit (0); }} classe ThreadServer implementa Runnable {private Socket msocket = null; Private BufferErader em = null; PrintWriter privado out = null; String privada mstrsg = null; public threadServer (soquete) {tente {this.msSocket = Socket; in = new BufferredReader (new InputStreamReader (msSocket.getInputStream (), "GB2312")); mstrmsg = "User:" + msocket.getineTAddress () + "vem Total:" + clients.size (); Sendmassage (); } catch (ioexception e) {System.out.println ("erorr"); System.Exit (0); }} private void sendmassage () {try {System.out.println (mstrmsg); para (Socket MySocket: Clients) {out = new PrintWriter (new OutputStreamWriter (mysocket.getOutputStream (), "GB2312"), true); out.println (mstrmsg); }} catch (ioexception e) {System.out.println ("erorr"); System.Exit (0); }} public void run () {try {while (mstrmsg = in.readline ())! = null) {if (mstrsg.trim (). Equals ("exit")) {clients.remove (msocket); in.Close (); out.Close (); mstrmsg = "Usuário:" + msocket.getineTAddress () + "Sair Taxal:" + clients.size (); ; msocket.close (); Sendmassage (); quebrar; } else {mstrmsg = msocket.getineTAddress () + ":" + mstrsg; Sendmassage (); }}} catch (ioexception e) {System.out.println ("erorr"); System.Exit (0); }}} public static void main (string [] args) {new tcpServer (); }} 2.tcpclient.java
importar java.net.*; importar java.io. cliente de soquete privado = nulo; Private BufferReader Sin = NULL; ExecutorService mexecutorService; public tcpclient () {try {client = new Socket ("120.27.126.174", porta); sin = new bufferredreader (novo inputStreamReader (client.getInputStream (), "gb2312")); mexecutorService = executores.newcachedthreadpool (); mexecutorService.execute (novo ThreadClient (cliente)); String msg = null; while ((msg = sin.readline ())! = null) {System.out.println (msg); }} catch (ioexception e) {System.out.println (e.getMessage ()); }} classe ThreadClient estende thread {msocket de soquete privado = null; String privada msg = null; BufferredReader in = null; PrintWriter Out = NULL; public threadClient (soquete) {this.msocket = soket; } public void run () {try {in = new BufferredReader (new InputStreamReader (System.in)); out = new PrintWriter (novo outputStreamWriter (msocket.getOutputStream (), "GB2312"), true); while (true) {msg = in.readline (); out.println (msg); if (msg.Trim (). Equals ("Exit")) {in.Close (); out.Close (); mexecutorService.shutdownNow (); quebrar; }}} catch (ioexception e) {System.out.println ("veja você"); System.Exit (0); }}} public static void main (string [] args) {new tcpClient (); }}O exposto acima é o código para o Java implementar a função da sala de bate -papo TCPSocket. Espero que seja útil para o aprendizado de todos.