6

単純なサーバーレス LAN チャット プログラムを楽しみのために開発したいと考えています。これどうやってするの ?どのタイプのアーキテクチャを使用する必要がありますか?

昨年、私はTCP、UDPクライアント/サーバーアプリケーションプロジェクトに取り組みました。単純でした(サーバーは特定のポート/ソケットをリッスンし、クライアントはサーバーのポートに接続するなど).しかし、「サーバーレス」LANチャットを開発する方法についてはわかりませんプログラム。これどうやってするの?UDP、TCP、マルチキャスト、ブロードキャスト? または、プログラムはサーバーとクライアントの両方のように動作する必要がありますか?

4

3 に答える 3

10

最も簡単な方法は、UDP を使用してネットワーク全体にメッセージをブロードキャストすることです。もう少し高度なバージョンは、ブロードキャストのみを使用してネットワーク内の他のノードを検出することです。

  • すべてのノードは、既知のピアのリストを保持しています。
  • メッセージは、既知のすべてのピアに TCP で送信されます。
  • ノードが起動すると、UDP ブロードキャストを送信して他のノードを検出します。
  • ノードがディスカバリー ブロードキャストを受信すると、それを自己認識させるために、ブロードキャストの送信元に「自身」を送信します。受信ノードは、既知のピアの独自のリストにブロードキャスターを追加します。
  • ノードがネットワークからドロップアウトすると、リストからドロップされたクライアントを削除する必要があることを残りのノードに通知するために、ノードは別のブロードキャストを送信します。

また、ネットワークの残りの部分に通知することなく、ノードのドロップアウトを処理することも検討する必要があります。

于 2008-12-20T21:05:52.667 に答える
1

拡散ツールキットは、あなたが望むものには少しやり過ぎかもしれませんが、興味深い出発点です.

宣伝文句から:


Spread は、ローカルおよびワイド エリア ネットワーク全体の障害に対して回復力のある高性能メッセージング サービスを提供するオープン ソース ツールキットです。Spread は、分散アプリケーションの統合メッセージ バスとして機能し、高度に調整されたアプリケーション レベルのマルチキャスト、グループ通信、およびポイント ツー ポイント サポートを提供します。スプレッド サービスは、信頼性の高いメッセージングから、配信保証付きの完全に順序付けされたメッセージにまで及びます。

Spread は、メンバーのさまざまなサブセット間で高い信頼性、高性能、および堅牢な通信を必要とする多くの分散アプリケーションで使用できます。このツールキットは、非同期ネットワークの困難な側面をカプセル化し、信頼性が高くスケーラブルな分散アプリケーションの構築を可能にするように設計されています。

Spread は、ユーザー アプリケーションがリンクされるライブラリ、プロセッサ グループの一部である各コンピュータで実行されるバイナリ デーモン、およびさまざまなユーティリティおよびデモ プログラムで構成されます。

Spreadが提供するサービスと利点の一部:

  • 信頼性と拡張性に優れたメッセージングとグループ通信。
  • 非常に強力でシンプルな API により、分散アーキテクチャの構築が簡素化されます。
  • 使用、展開、および保守が簡単です。
  • 1 つのローカル エリア ネットワークから複雑なワイド エリア ネットワークまで、高度にスケーラブルです。
  • メンバーのセットが異なる何千ものグループをサポートします。
  • マシンの障害、プロセスのクラッシュと回復、およびネットワークのパーティションとマージが発生した場合でも、メッセージの信頼性を有効にします。
  • メッセージの信頼性、順序付け、および安定性の保証の範囲を提供します。
  • 堅牢性と高性能を重視。
  • 中央障害点のない完全に分散されたアルゴリズム。
于 2008-12-20T21:34:21.660 に答える
0

アップルの iChat は、まさにあなたが想像している製品の例です。Bonjour (Apple の zero-conf ネットワーク プロトコル) を使用して、LAN 上のピアを識別します。その後、彼らとチャットまたはオーディオ/ビデオチャットを行うことができます.

Bonjour が内部でどのように機能するかは完全にはわかりませんが、マルチキャストを使用していることはわかっています。クライアントは LAN 上のサービスを「登録」し、Bonjour プロトコルにより、各ホストは特定のサービスのホストのディレクトリを取得できます (すべて中央管理なし)。

于 2009-02-27T17:07:55.333 に答える