1

サーバーや既存のピアネットワークを介さずに、ネットワーク上で相互に自動検出できるクライアント/サーバーアプリケーション(Windows Phone7クライアントとWindowsPCサーバーを使用)を作成しようとしています。単純な検出モデルのマルチキャストUDPを使用して、プロトタイプのクライアント/サーバー実装を作成することができました。このスキームは、両方のマシンが同じWiFiネットワークを使用するように構成されている場合にうまく機能します。ただし、サーバー(PC)がイーサネット経由でドメインネットワークに接続されている場合、クライアント(WP7)とサーバーはUDPマルチキャストパケットを送受信できなくなります。2つには異なるゲートウェイサーバーが構成されていますが、奇妙なことに、サーバーの明示的なIPアドレスが使用されている場合でも、TCP/IPを介して接続を確立できます。

このように構成されたネットワーク上にある場合、クライアント/サーバーが相互に自動検出する正しい方法は何ですか?自動検出の標準的なメカニズムはありますか?これは潜在的にネットワークの問題ですか、それともアプリケーション層で対処できる問題ですか?

任意の洞察をいただければ幸いです。

4

2 に答える 2

0

マルチキャストUDPは通常、ルーターの境界を越えて伝播されません。したがって、従来は、ピアの検出に中央サーバーを使用することです。サーバーを見つける必要があるとき、物事はよりトリッキーになります。場合によっては、DNSを使用できます(DNSにカスタムレコードを配置すると、レコードはサーバーのアドレスを参照します)。Active Directory環境では、おそらくいくつかのADサーバーを使用して同様のレコードを保持できます。

于 2012-08-14T05:59:55.900 に答える
0

これらは私の考えであり、正確かどうかはわかりません。UDPの方法でそれを行うのは問題ないはずです.TotemのようなプロトコルはUDPに依存していると思います. UDP は、ネットワーク プロトコルが自動サービス検出のためにペグするものでもあります。

しかし、UDP が信頼できないクロスドメインの問題に対処している場合は、TCP を使用する必要があります。TCP は信頼性を確保しますが、自動検出機能があるかどうかは疑問です。

サーバーをLDAPのようなネーミングサーバーに登録するのが良い方法だと思います..クライアントがLDAPにクエリを実行してサーバーの詳細を取得できるようにします。しかし、これは私にとってアプリケーション層のアプローチです。

私たちの製品では、Gossip プロトコル over TCP を使用して分散システムのハートビートをチェックしているのを見てきました。

于 2012-08-14T05:42:59.957 に答える