目标: 实现一个聊天室, 每一个客户端发送的消息都能在各个客户端显示出来
思路:设有服务器类和客户端类, 服务器主要用于消息的多线程转发, 服务器启动后,等待连接,若有客户端连上,则将其Socket对象置于一个容器中,随后便对每一个接收过来的消息转个给容器中每一个Socket对象对应的客户端
public class Server extends Thread{
// 声明一个容器,用于存储所有Socket对象,用来转发给所有用户
static List<Socket> list = new ArrayList<>();
private Socket s;
public Server(Socket s){
super();
this.s = s;
}
@Override
public void run() {
// 接收客户端发送过来的消息并转发给所有的客户端
new ChatServer(s).start();
}
public static void main(String[] args) throws IOException {
// 指定端口
ServerSocket ss = new ServerSocket(8888);
System.out.println("服务器启动");
while(true){
// 等待客户端连接
Socket s = ss.accept();
list.add(s);
Tools.msg("客户端连接成功:"+Tools.showIp(s.getInetAddress()));
// 对每个Socket多线程处理
new Server(s).start();
}
}
}
public class C