1

私はソケットプログラミングにかなり慣れていないので、これは簡単な質問かもしれませんが、明確にしたいと思います。

複数のクライアントから単一のサーバーへのプログラムがあります。個々のクライアントは、メッセージを処理するサーバーにメッセージを送信し、宛先に渡します。つまり、サーバーは仲介者です。

サーバー側には、クライアントからのメッセージ (バッファに配置される) を「リッスン」するための、クライアントごとに 1 つのスレッドがあります。現時点では、すべてのクライアントが同じポートにメッセージを送信しています (私が知る限り)。

サーバーがメッセージを送信する前に処理する別のスレッドを設定することを考えています。それらのメッセージを送信するためにサーバー上の別のポートを使用することは理にかなっていますか?

これが議論であるという意味ではありませんが、何が一般的で、より論理的であるかがわかりません - 何かアドバイスはありますか?

クライアント側では、サーバーにメッセージを送信するための 1 つのスレッドと、受信するための別のスレッドを持つことを計画しています。他に必要な情報があれば教えてください!

編集

現時点では、1 サーバー対複数 (現在は数十、後で数百) のクライアント プログラムです。クライアントがサーバーからメッセージを受信する際に問題があるようです (トラブルシューティングを行っているため、同じポートを使用すると、問題があります)、同じポートでもう一度試してみます。受信ポートがビジーでメッセージを送信できないことも問題ではないかと思いました。

4

1 に答える 1

1

現時点では、すべてのクライアントが同じポートにメッセージを送信しています (私が知る限り)。

「私が知る限り」とはどういう意味ですか? サーバーで複数のポートを開いているかどうかを確認する必要があります。

それらのメッセージを送信するためにサーバー上の別のポートを使用することは理にかなっていますか?

いいえ、そうではありません。TCP を使用している場合は、メッセージを同じソケットに送り返します。UDP を使用している場合、複数の UDP ソケットは必要ありません。また、要求が送信されたのと同じ ip:port から応答が返される場合、クライアントとアプリケーション プロトコルが簡素化されます。

于 2013-03-06T08:52:18.620 に答える