2

私のアプリは TCP ソケットを開き、同じアプリケーションを使用してネットワーク上の他のユーザーからのデータを待ちます。同時に、ネットワーク上の特定のホストにデータをブロードキャストできます。

現在、データを送信するには宛先ホストの IP を手動で入力する必要があります。アプリケーションを実行しているすべてのホストのリストを見つけて、ユーザーがデータをブロードキャストするホストを選択できるようにしたいと考えています。

Bonjour/ZeroConf は、これを達成するための正しいルートですか? (OSX/Win/*Nix のクロスプラットフォームにしたい)

4

4 に答える 4

2

ネットワーク上の指定されたホストにデータをブロードキャストできます

これは不等式です。

あなたは実際にはブロードキャストを意味しているのではなく、ユニキャストまたは単に「送信」を意味していると思いますか?

Bonjour/ZeroConf は、これを達成するための正しいルートですか?

これは、ターゲット環境とアプリケーションの目的によって大きく異なります。

Ignacio が指摘しているように、現時点で Zeroconf/mDNS を機能させるには、Apple ソフトウェアを Windows にインストールする必要があります。

これは、小規模オフィス/家庭での使用に適している可能性があります。


ただし、大規模なネットワークでは、さまざまな理由でレイヤー 2 マルチキャストが無効になっている場合があり、その時点でアプリに問題が発生する可能性があります。

エンタープライズ環境で動作させるには、いくつかの構成が必要ですが、エッジ (アプリ クライアント インスタンス) で行う必要はありません。

DHCP オプションまたは DNS サービス レコードによる可能性があります..これらの場合、アクティブなクライアントを追跡するクエリ可能なサーバーを作成する可能性があります..BitTorrent トラッカーによく似ています。

ネットワーク アプリを設計する際に考慮すべき 2 つの点:

  • ネットワーク上でアプリケーションの複数の「インストール」を実行する理由はありますか?
  • バージョン管理の影響を常に考慮してください。あるクライアントが別のクライアントよりも最新の状態になっている場合、それらは引き続き相互に通信できるか、または少なくとも正常に失敗しますか?
于 2010-12-03T09:28:54.697 に答える
2

この場合、Zeroconf/DNS-SD は優れたアイデアです。これは、OS X および Windows では Bonjour によって提供され (ただし、Windows では個別に、または Apple 製品の一部としてインストールする必要があります)、FOSS *nix では Avahi によって提供されます。

于 2010-12-03T08:12:02.870 に答える
0

私はあなたがインターネット通信を必要とするならば素晴らしい、ウェブページにリストを持っています。

<dl_service updated="2010-12-03 11:55:40+01:00">
 <client name="internal" ip="10.0.23.234" external_ip="1.1.1.1"/> 
 <client name="bigone" ip="2.2.2.2" external_ip="2.2.2.2">
  <messsage type="connect" from="Bigone" to="internal" />
 </client> 
</dl_service>

私の最初のアイデアはファイアウォールパンチングなどを追加することでしたが、外部IPを使用することが問題になるほど多くのホストを気にすることはできませんでした。

しかし、少なくともLinux + MacOSXを使用している場合は、Windowsについてまったく知らないZeroconfをお勧めします。

于 2010-12-03T11:07:35.633 に答える
0

ZeroConf はとても良いスタートだと思います。このドキュメントは役に立つかもしれません。

于 2010-12-03T09:32:21.587 に答える