解决思路 创建服务器端,将连接的客户端对应的Socket保存到列表中,接收到客户端消息后,转发给其他客户端。 创建客户端,启动一个线程接收服务器端消息并输出,同时循环从键盘读取消息发送给给服务器端。 具体步骤 服务器端 创建ServerSocket,阻塞接受客户端请求,当连接建立是会产生一个和客户端对应的Socket,保存到静态列表中。 public static List<Socket> socketList = new ArrayList<Socket>(); ServerSocket serverSocket = new ServerSocket(30000); Socket socket = serverSocket.accept(); socketList.add(socket); 没建立一个链接就启动一个线程,并把当前Socket传入,此线程用来接收客户端消息并发送给其他客户端 public void run() { try { String line; //循环从Socket中读取客户端发来的数据 发送给所有客户端 while ((line = br.readLine()) != null) { for (Socket s : MyServer.socketList) { if (s != this.s) { PrintStream ps = new PrintStream(s.getOutputStream()); ps.println(line); } } } } catch (IOException e) { e.printStackTrace(); } } 客户端 新建Socket并指定地址指定端口 Socket s = new Socket("127.0.0.1", 30000); 启动客户端线程,此线程用来接收服务器端消息并输出 new Thread(new ClientThre