WCF を使用してクライアントとサーバー プログラムを作成したいと考えています。それらの間の通信はTCPになります。クライアントは、ホスト名を挿入できる Windows フォームになり、そのマシンで実行されているすべてのサーバーが一覧表示されます。
これを行う方法はありますか?つまり、マシン ホストのすべての WCF サービスを参照するにはどうすればよいでしょうか。
WCF ディスカバリー - http://msdn.microsoft.com/en-us/library/dd456782.aspx
Windows Communication Foundation (WCF) は、WS-Discovery プロトコルを使用して相互運用可能な方法で実行時にサービスを検出できるようにするためのサポートを提供します。WCF サービスは、マルチキャスト メッセージを使用してネットワークに、または検出プロキシ サーバーに、その可用性を通知できます。クライアント アプリケーションは、ネットワークまたは検出プロキシ サーバーを検索して、一連の基準を満たすサービスを見つけることができます。
方法: プログラムによって検出可能性を WCF サービスとクライアントに追加する - http://msdn.microsoft.com/en-us/library/dd456783.aspx
これを自動的に行う方法はありません。何年にもわたってさまざまなディレクトリ サービス プロトコルがありましたが、実際に普及したことはありません。全体的に最も成功しているものは、マルチキャスト DNS または zeroconfとして知られています。ただし、Windows API はそれをあまりサポートしていません。Apple は Bonjour という名前でサポートし、Linux は Avahi という名前でサポートしています。
最も近い Windows の同等物は UPnP SSDP ですが、よく知られたセキュリティの脆弱性が発見された後、Microsoft はそのサポートを全面的に中止しました。PNRP (Peer Name Resolution Protocol) として知られる IPv6 の大まかな同等物がありましたが、これもほとんど使用されなくなりました。
したがって、実際には、Windows 用の mDns ライブラリを見つけるか、独自のライブラリを作成するかの選択肢があります。