目标: 实现一个聊天室, 每一个客户端发送的消息都能在各个客户端显示出来
思路:设有服务器类和客户端类, 服务器主要用于消息的多线程转发, 服务器启动后,等待连接,若有客户端连上,则将其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 ChatServer extends Thread{
private Socket s;

该博客介绍了如何使用TCP/IP协议创建一个聊天室,其中服务器通过多线程技术转发客户端的消息,确保每个连接的客户端能接收到所有其他客户端发送的信息。
最低0.47元/天 解锁文章
570

被折叠的 条评论
为什么被折叠?



