4

デスクトップとモバイル アプリ コンポーネントの両方でアプリケーションを作成しています。デスクトップ アプリは c# で記述されているので、それを開いてモバイル アプリのサーバーとして機能できるようにしたいと考えています (AirVideo と同様)。ユーザーがファイアウォールやルーターを構成する必要なく、これを実現するにはどうすればよいですか?

理想的には、デスクトップ アプリで安らかな wcf サービスを自己ホストしたいと考えています。これは既に試しましたが、システム プロセスによってホストされているように見えるため、ファイアウォールの自動構成では wcf サービスへのリモート接続が許可されません。この動作の回避策はありますか?

編集: NATUPnP COM ライブラリ (http://pietschsoft.com/post/2009/02/05/NET-Framework-Communicate-through-NAT-Router- UPnP.aspx 経由)。ファイアウォールを手動で構成せずに、ファイアウォールを介してセルフホステッド WCF サービスへのリモート接続を許可する方法をまだ知る必要があります (アプリの起動後に接続を許可するユーザー プロンプトで問題ありません)。

4

1 に答える 1

2

サーバーアドレスにルーティングするように指定されたルーターの特定のポートを設定します。
したがって、ルーターの実際のIPがabcdの場合、abcd:port#へのすべての通信がサーバーのローカルアドレスにルーティングされるように設定する必要があります。(abcd:port#-> serverIP)

このための設定は、ルーター構成から行うことができます。

ルーター設定/ファイアウォール設定をいじることができない状況:
これは、ポートを使用して着信接続をリッスンすることはできず、発信接続のみを使用できることを意味します。これを克服するには、両側のリスナーとして機能する実際のIPアドレスを持つ3番目のサーバーを使用する必要があります。一般的なシナリオは次のように説明できます。

クライアント側-A(デスクトップ)
クライアント側-B(スマートフォン)
サーバー側-S(通信サーバー)

  1. S->着信接続をリッスンするためにポートを開きます。
  2. A-> x秒ごとにSに接続して、何かを実行する要求が待機しているかどうかを確認します。
  3. B-> Sに接続します(Aの待機要求を発行します)

このようにして、Sは双方の通信を接着するためのプロキシとして機能します。

于 2012-05-28T04:18:55.710 に答える