0

これには簡単な回避策があると確信していますが、今のところ、エレガントな解決策を見つけることができないようです。複数のクライアントを受け入れて適切に処理する ASync C# サーバー アプリケーションを構築しましたが、続行するには、どのクライアントがサーバーに接続されているかを判断できる必要があります (両方とも異なることを行うクライアントは 2 つだけです)。

私のプログラムがこれらのクライアントを受け入れるとき、サーバーにクライアントのアドレスと、どのクライアントが小さなリストに格納される可能性があるかを示す必要があります。

クライアントが接続したときに、定義済みのメッセージをサーバーに送信して、どのクライアントアプリケーションがどのアドレスに送信されるかを知らせる簡単な方法はありますか?

ありがとう

4

2 に答える 2

1

多くの方法があります。

最も簡単な方法の 1 つは、クライアント アプリケーションごとに異なるポートを使用することです。もう 1 つの方法は、(TCP ハンドシェイク後に) 「接続」するために、データが交換される前にアプリケーションを識別するメッセージを送信することです。もう1つのオプションは、各リクエスト/応答にヘッダーを追加して、アプリケーションを記述し、それを保存することです。

于 2012-10-30T15:34:38.320 に答える
1

ソケットを介してあらゆる種類のデータを自由に送信できます。

これを解決するには、クライアントとサーバーの間である種のプロトコルを発明します。

たとえば、サーバーへのクライアントを識別するために接続するときに最初のメッセージを送信します。そこからは二人の普通の会話を続けます。

サーバーは、メッセージを受け入れてそれを表示するか、または最初のメッセージに合意された情報が含まれていない場合にクライアントを拒否することさえできます。

于 2012-10-30T15:35:13.137 に答える