1

過去および現在の非常に多くのプログラムは、サーバー/クライアント ベースで動作します。例としては、TeamSpeak、Ventrilo、Mumble などがあります。通常、これらのプログラムでは、サーバーを実行しているコンピューターが、サーバーのルーターに接続要求を送信しているクライアントからメッセージを取得できるように、ルーターにアクセスしてポートを転送する必要があります。

最近のWCFには、そのようなことを防ぐことができるものはありますか? 私はチャット/ファイル転送プログラムを持っていますが、ユーザーが自分のポートを転送する方法を知る必要がないことを本当に望んでいます。

UPnP またはパンチスルーにはどのようなオプションがありますか? プログラムが使用するすべての特定のポートを通過して転送する必要があるという概念は、時代遅れのようです。

4

1 に答える 1

1

WCF を使用した WS-Discovery をご覧ください。

http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx

発見プロトコルは、あなたが言うように、中央の「サーバールーター」を否定します。UDPブロードキャストを使用して、クライアントに相互に通知します。

検出プロトコル自体は、単なるステートレス メッセージング プロトコルであることに注意してください。保証や状態の同期はありません。たとえば、クライアント A がクライアント B からブロードキャスト メッセージを受信しない場合、クライアント A はクライアント B を認識しません。この P2P 状態を維持するためのプロトコル オーバーヘッドは複雑であり、通常、この状態を保持する単一のサーバーが最も簡単な方法です。

于 2012-12-26T09:34:51.400 に答える