TCP通信-支持与多个客户端同时通信

代码:
Server类(服务端)
package com.itheima.day5_TCP3;import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {public static void main(String[] args) throws Exception {System.out.println("---服务端启动成功---");ServerSocket serverSocket = new ServerSocket(8888);while (true) {Socket socket = serverSocket.accept();System.out.println("有人上线了:"+socket.getRemoteSocketAddress());new ServerReaderThread(socket).start();}}
}
ServerReaderThread类(线程方法)
package com.itheima.day5_TCP3;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;public class ServerReaderThread extends Thread{private Socket socket;public ServerReaderThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {InputStream is = socket.getInputStream();DataInputStream dis = new DataInputStream(is);while (true) {try {String msg = dis.readUTF();System.out.println(msg);} catch (Exception e) {System.out.println("有人下线了:"+socket.getRemoteSocketAddress());dis.close();socket.close();break;}}} catch (Exception e) {e.printStackTrace();}}
}
Client类(客户端)
package com.itheima.day5_TCP3;import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {public static void main(String[] args) throws Exception {Socket socket = new Socket("127.0.0.1", 8888);OutputStream os = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(os);Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");String msg = sc.nextLine();if ("exit".equals(msg)) {System.out.println("欢迎您下次光临!退出成功!");dos.close();socket.close();break;}dos.writeUTF(msg);dos.flush();}}
}
