WCF を使用して、クライアントのポートを開かずに双方向通信を有効にしたいと考えています。
通信するためにポートを開く必要のない P2P アプリケーション (teamviewer/logmein に類似) のようなものを開発しています。
クライアントでポートを開く必要なく、HTTP/HTTPS を介して双方向通信を行うにはどうすればよいですか?
注:ポート80はサーバーで開くことができます...それについては問題ありません。
ありがとう
あなたが言及したシステムは次のように機能します。彼らは最初に、クライアント A とクライアント B がさまざまなトポロジを介して直接通信できるようにしようとします。基本的には、いずれかが着信接続を許可する必要があります。したがって、クライアント A はサーバーと対話し、クライアント B にメッセージを送信します。その後、クライアント A は、応答として自分宛てのメッセージを取得します。クライアント B はメッセージをサーバーに送信し、クライアント A からのメッセージをサーバーから取得します。この方法では、クライアント A と B の両方が常に接続を開始し、着信トラフィック用にポートを開く必要はありません。
私があなたの場合を正しく理解していれば、あなたは常に真ん中の男が欲しいでしょう. これを行うには、関連するすべてのメソッドを提供する WCF サービスを作成する必要があります。たとえば、次のようなもの
次に、これらのメソッドにそれぞれ Message オブジェクトを保存して、どこか (データベースやキューなど) から取得させます。
次に、HTTP バインディングを使用して WCF サービスに接続するクライアントを作成し、サーバーでメソッドを呼び出して結果を処理します。
ご理解いただければ幸いです
疑似 (コード) の例
この例では、メッセージ オブジェクトは単なる文字列であり、唯一のコマンドは "whattimeisit" であり、応答は文字列形式の現地時間であると想定しています。
私は上手く理解できていない気がします。デジタル ファイアウォールの目的は、(一般に) 通信チャネルを制御することです。ファイアウォールをバイパスして通信したい場合は、2 つの選択肢があります。
以前の場合:
メッセージを渡したプロキシにメッセージを渡すことができます (電子メールは良い例ですが、正確に応答するわけではありません)。
後者の場合:
他のトランスポート層がそれらを運ぶファイルにメッセージを置くことができます