晚上好!
我正在尝试使用java和Sockets编写服务器/客户端代码。
发送消息的过程工作正常,但我不知道为什么,在我启动第二个客户端并发送第一个消息后,第一个客户端被卡住并且不再发送消息。
它必须是服务器端问题,因为我已经调试了整个代码,并发现while中的问题,一旦它离开它似乎id不再重新进入。 我的理论是它以某种方式停止了或者迭代器可能停止运作。
你能看看它并给我一些指导吗?已经花了4h这个。
非常感谢!
编辑:因为我被问到我已将代码缩减到我认为是问题的核心。正如我通过调试检查的那样,当退出时,线程会自行停止。服务器:
new Thread() {
public void run() {
String inputLine;
// Input Thread
while ((inputLine = clientSocket.read_str()) != null) {
// L'iterator ha de començar des del principi cada cop que que es comença el while
Iterator<MySocket> keyIterator = connections.keySet().iterator();
while (keyIterator.hasNext()) {
MySocket sock = keyIterator.next();
sock.write_str(inputLine);
}
}
clientSocket.close();
removeUser(clientSocket);
}
}.start();
答案 0 :(得分:0)
我发现了问题,我发现每个线程都使用clientSocket,我认为它可以在不同的clientSockets上工作,但它不是,所以一旦套接字更新,它只能从该套接字写入/读取
愚蠢的解决方案,抱歉浪费时间。
谢谢大家。