質問

.Net リモーティングと通信するクライアント/サーバー アプリケーションがあります。クライアント側の構成を必要とせずに、クライアントがネットワーク上のサーバーを見つけられるようにする必要があります。

私の知る限り、リモート処理では検出はサポートされていません。私は、クライアントがブロードキャスト メッセージを通じてサーバーを見つけられる UDP ソリューションを実装する準備ができています。

次に進む前に、集合的な知恵を聞きたいと思います。これが最善の方法でしょうか?他に何か提案はありますか?

役に立ちましたか?

解決

このタイプの機能については SSDP と UPnP の両方を検討しましたが、カスタム UDP を使用することをお勧めします マルチキャスト 解決。基本的に、マルチキャストはブロードキャストと非常に似ていますが、マルチキャスト グループに参加しているマシンのみが対象となります (つまり、マルチキャスト グループに参加しているマシンのみが対象となります)。放送をリクエストしました)に連絡します。

私見ですが、SSDP、UPnP は肥大化しており、リソース検出が過度に複雑です...でもまあ、それは標準です。;)

他のヒント

あなたが必要としているのは、 シンプルなサービス検出プロトコル またはSSDP。これは、Microsoft のサポートの一環として Windows に実装されています。 ユニバーサルプラグアンドプレイ. 。これは業界標準のプロトコルなので、良い選択だと思われます。たとえば、ファイアウォールやその他の問題に対処したい場合、独自のソリューションを導入する必要はなく、他の人が解決してくれるでしょう。

.NET について話しているので、Windows を使用していると仮定します。Windows 用の C スタイル API と COM API について説明した少し古いドキュメント (2001 年) があります。 ユニバーサル プラグ アンド プレイ (UPnP) クライアントのサポート. 。COM API は UPNP.DLL によって公開され、SSDP 用の C スタイル API は SSDPAPI.DLL によって公開されます。

UPNP 用の COM スタイル API おそらく最善の策です。C# は COM オブジェクトをラップして相互運用を処理できるためです。この API が C# または .NET Framework にネイティブに移植されている場所は見つかりませんでした。

Apple のものも検討してみてはいかがでしょうか ボンジュール, 、それは彼らの ゼロコンフ 実装。Mac、PC、Linux/BSD で利用できます。

私がリモート処理の仕事で見つけた最良の解決策は、クライアント システム上の構成ファイルにサーバー リストを保持し、更新可能にすることでした。メンテナンスはそれほど簡単ではありませんが、高速でブロードキャストはありませんでした。

最近の MS アップデートのため、マルチキャスト UDP ソリューションの信頼性が低いようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top