TCP多人聊天室实现
客户端一定是多线程
客户端主方法
用户名提交
数据发送和数据接收多线程启动
package homework.chartroom.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.util.Scanner; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author Anonymous * @description * @date 2020/3/9 20:05 * * 需要完成: * 1. 连接服务器 * 2. 启动接收端线程和发送端线程 * 需要注意: * 提供给服务器一个用户名,在连接Socket获取之后,第一次发送数据 * 给服务器时需要提供的,也就是第一次启动Send发送线程完成的 */ public class Client { public static void main(String[] args) { // 从键盘上获取用户输入的数据 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Socket socket = null; String name = null; try { System.out.println("请输入你的用户名:"); name = br.readLine(); if ("".equals(name)) { return; } // 存在连接异常情况,考虑捕获异常处理 socket = new Socket("192.168.31.154", 8888); } catch (IOException e) { System.err.println("连接失败"); try { br.close(); } catch (IOException ex) { ex.printStackTrace(); } System.exit(0); } // 使用线程池启动两个线程,一个是发送一个接受 ExecutorService pool = Executors.newFixedThreadPool(2); pool.submit(new ClientSend(socket, name)); pool.submit(new ClientReceive(socket)); } } 数据发送 pa