2009-08-15 5 views
3

私は、クライアントがネットワーク内のサーバーの存在を自動的に検出できるようにするクライアント/サーバーアプリケーションを作成しています。ブロードキャストサーバーのネットワーク上への存在

私はサーバーが何とかその存在を放送すべきだと思います。それを行う最善の方法は何ですか?

サーバーはWindows/LinuxまたはOS Xで実行されるため、ソリューションはクロスプラットフォームでなければなりません。クライアントとサーバーはC++で書かれています。

答えて

4

この情報をブロードキャストする一般的な方法として、ZeroConfを調べる必要があります。アップルのシステムではBonjour(以前のRendezvous)として知られていますが、アップル固有のものではありません。他の多くのデバイス(組み込み機器とOSの両方)がブロードキャスト/使用しています。

多くの言語でZeroConfを扱うことができるライブラリがたくさんあります.1つは、Googlingの問題です。 ZeroConf自体は、プロセスの広告/発見の一部であり、マシンとソケットを識別しますが、あなたが特定したソケット上の任意のものを実行できます。

たとえば、Apache mod_zeroconfを使用すると、Apacheサイトをブロードキャストできます。あなたのソリューションは、あなたが依存しているライセンスと使用権に依存します。

2

あなた自身でやりたければ、multicastingを使うことができます。 これを行うには、次のような方法があります。 1)サーバーは定期的にサブスクライブされたクライアントにその存在を通知してから、クライアント&の間のユニキャスト送信を行います。 2)サブスクライブしたサーバーにクライアント信号(複数回)が存在し、再びサーバー&クライアント間のユニキャスト送信が続きます。 マルチキャストはすべてUDPになり、ユニキャストはTCPまたはUDPのいずれかになるとみなす必要があります。

関連する問題