2010-12-16 10 views
1

私はクライアント/サーバアプリケーションを作っています。アプリケーションはリモートホスト上にあるサーバアプリケーションを持ち、クライアントアプリケーションは異なるIPアドレスを持つ異なるクライアントに配置することができます。 サーバーアプリケーションはポート80に自分のIPアドレスを持ち、別のクライアント要求をリッスンします。 このクライアント/サーバーアプリケーションはリアルタイムチャットもサポートしますので、異なるクライアントがファイアウォールとルーターの背後にある場合、サーバーはこれらのファイアウォールとルーターを介してクライアントアプリケーションにリアルタイムメッセージを送信できますが、それらの応答も待っています。system.net.socketsでクライアントファイアウォールとルータを使ってクライアント/サーバアプリケーションを構築する

答えて

0

ポートが開いている場合は...はい。

+0

クライアントアプリケーションには、毎回ウェブに接続する動的IPアドレスとポートがあります。 – Massimo

+0

クライアントアプリケーションは、Webに接続するたびに動的IPアドレスとポートを持ちます。 私のアプリケーションは常にWeb上にあり、Ipとport(80)が開いている問題を修正しています。 クライアントアプリケーションがサーバーアプリケーションを呼び出すと、システムによって割り当てられたIPとポートを介して呼び出され、そのipとポートに。 しかし、この時点で、サーバーは別の呼び出しを受け付けることなく、クライアントに別の送信操作を実行できますか? – Massimo

0

これを回避する一般的な方法の1つは、サーバーに要求をパークし、それに応答することです。ほとんどのファイアウォールでは、クライアントに要求することはできません。したがって、サーバーへの非同期要求を行い、クライアントに送信する意味があるまでサーバーは戻りません。次に、応答が送信された後、クライアントに次のサーバーデータの要求をパークさせます。

+0

非常に興味深いMatt。 しかし、私はどのようにサーバーに非同期要求を行うことができます。 1)クライアントはサーバのIPアドレスとポート(123.123.123.123:12345)から動的IPとポート(456.456.456.456:80) に接続します。2)クライアントへのサーバ(123.123.123.123:12345) 3)クライアント(123.123.123.123:12345)はサーバー(456.456.456.456:80)に何も問い合わせることなく別の要求をしてから、応答を待ちますか? これは意味ですか? – Massimo

+0

私はあなたのことを正しく理解していれば、はい。クライアントはサーバーに要求を行い、応答を待つ必要があります。サーバは、クライアントが何か気になることがあるときにのみ応答します。そうでない場合、サーバは接続を開いたままにします。クライアントが応答を受け取ると、別の要求を送信し、そのような通信を続行します。 –

+0

Mattさんに感謝します。 私は非同期サーバーソケットプログラミングのいくつかの例を探していますが、これはサーバー側のものです。http://msdn.microsoft.com/en-us/library/fx6588te.aspxと同じページの最後クライアント側のクライアント/サーバアプリケーションがマルチクライアントになる例があります。私はソケットプログラミングの初心者ですから、あなたは私を助けてくれるでしょうか、正しい方法ですか? 再度ご連絡ありがとうございます。 – Massimo

関連する問題