通常、クライアント/サーバー通信用に異なるポートが必要になるのはいつですか?(この質問は、C#および一般的なソケットプログラミングに関するものです)。
単純なC#クライアントサーバーアプリケーションを実装して使用しています。基本的に:
- サーバーはクライアントをリッスンします
- 受け入れられた/接続された
- サーバースポーンクライアントスレッド-
- サーバーはクライアントが話すのを待つ
- クライアントトーク
- サーバーの応答
- クライアントトーク
- サーバーの応答など。
NetworkStream.Read()
クライアントが会話を停止した場合、クライアント側が切断しない限り、サーバーはその生成されたスレッドで永久にモードでブロックします。
私は今、どちらかの側で何らかのイベントが発生するまで両側が静かになり、クライアントまたはサーバーのみがデータを送信する状況を考えています。そのため、両方が何らかの形で同時にNetworkStream.Readモードになり、同時に相互に送信できる必要があります(イベントが両側で同時に発生した場合)。
この場合、異なるポートが必要ですか、それともクライアントとサーバーの両方をNetworkStream.BeginReadモードにすることができますか?NetworkStreamが書き込みモードと送信モードの両方で同時に発生するという問題のリスクはありませんか?
ありがとう。