【发布时间】:2015-11-02 18:08:21
【问题描述】:
我创建了一个简单的聊天服务器,它向所有连接的客户端写入数据(为了简单起见,我只发布了核心代码)
public class server extends Thread {
private Socket clientSocket;
private static ArrayList<Socket> sockets = new ArrayList<Socket>();
public server(Socket clientSocket) {
this.clientSocket = clientSocket;
sockets.add(clientSocket);
}
public void run() {
while (true) {
try {
for(Socket s: sockets) {
//write something
//the for loop will send it to every socket in the array
}
} catch (Exception e) {
//catch it
}
}
}
}
现在我想更具体地说明我想向哪个客户端发送消息,就像现实世界的聊天应用程序将如何拥有不同的聊天室一样。
所以如果 Client1 连接到服务器,他会想要启动一个名为 “苹果”。然后当Client2和Client3连接时,他们可以选择加入“Apple”组。同时,客户端 4 将连接到服务器并创建另一个名为“香蕉”的聊天组,其他客户端可以加入其中并在那里交谈。
我的理解是我需要以某种方式识别服务器接受的每个客户端(我不知道如何实现这一点)。那么我是否以某种方式根据他们的群聊名称将它们全部放入自己的数组中?
我一直在寻找过去一周的示例代码,这些代码允许同时进行 1 个以上的群聊,但我所看到的所有内容都只针对 1 个。
【问题讨论】:
-
嗨@Pam,你做了其他测试吗?
标签: java networking server chat