我想编写一个服务器,它在给定端口上侦听连接,并将套接字放入BlockingLinkedQueue
,消费者线程将从中读取消息。我以这种方式接受传入的连接:
ServerSocket serverSocket = new ServerSocket(port);
while (true)
{
Socket socket = null;
socket = serverSocket.accept();
queue.put(socket);
}
当我尝试从两个独立的主机并行连接时,会发生在建立第二个连接后,对第一个主机的响应被发送到第二个主机。当我将我的代码更改为下面列出的代码时,第二个连接仅被拒绝:
while (true)
{
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
queue.put(socket);
}
我的问题是:
答案 0 :(得分:5)
这两种情况有什么区别?
在第一种情况下,您使用相同的端口进行多个连接。在第二种情况下,您将丢弃服务器端口,以便拒绝任何等待连接。
为什么在第一种情况下会将消息发送到第二个主机?
由于代码中存在错误,此处未显示。
我应该如何重构我的代码,以便在我的服务器和两台主机之间创建单独的连接并并行处理它们?
为每个连接创建一个线程。