指定されたポートで接続をリッスンしBlockingLinkedQueue
、コンシューマー スレッドがメッセージを読み取るソケットを配置するサーバーを作成したいと考えています。この方法で着信接続を受け入れます。
ServerSocket serverSocket = new ServerSocket(port);
while (true)
{
Socket socket = null;
socket = serverSocket.accept();
queue.put(socket);
}
2 つの別々のホストから並列に接続しようとすると、最初のホストへの応答が 2 番目の接続の確立後に 2 番目のホストに送信されることがあります。コードを以下のリストに変更すると、2 番目の接続は単に拒否されます。
while (true)
{
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
queue.put(socket);
}
私の質問は次のとおりです。
- この 2 つの状況の違いは何ですか? 最初の状況でメッセージが 2 番目のホストに送信されるのはなぜですか?
- サーバーと両方のホストの間に個別の接続を作成し、それらを並行して処理するには、コードをどのようにリファクタリングする必要がありますか?