2017-11-21 20 views
1

私は、とりわけ、異なるマルチキャストアドレスで常にデータを送信する必要のあるサーバーを作成しています。送信されるパッケージは、上記のアドレス間で切り替わるクライアント側(アプリケーション)によって受信される可能性があります。迅速にマルチキャストソケットを実装する方法は?

私はパーフェクト(https://github.com/PerfectlySoft/Perfect)を使ってサーバー側を書いていますが、Perfect-NetモジュールやCocoaAsyncSocketを使用することはできません。迅速に送信者と受信者の両方を実装するにはどうすればよいですか?どんなスニペットでも本当に便利です。

私はマルチキャスティングについて読んできましたが、レシーバに関しては、ほとんどの言語(つまりjavaまたはc#)では受信者がポート番号とマルチキャストIPアドレスを示すことがよくありますが、サーバーとの接続が行われていますか?ソケットはいつ実際のサーバのIPアドレスにバインドされますか?事前

答えて

1

おかげで私たちは、TCP/IPスタック、唯一のIPおよびUDPのサポートブロードキャストおよびマルチキャストの話なら。彼らはコネクションレスなので、特別なマルチキャストアドレスへの送受信だけが見えますが、バインドや接続はありません。 (a)プロトコルは言語に依存せず、(b)ほとんどの実装はBSDソケットインタフェースとの互換性を保つために妥当な努力を払っているため、さまざまな言語で表示されます。

真のマルチキャストが必要な場合は、設定オプションを許可するソケットをすばやく実装する必要があります。この操作の通常の名前はsetsockoptです。マルチキャスト送信側は、基本UDPソケット(UDPではなくIPを使用することをお勧めします)以外のものは必要ありませんが、送信者の場合はneeds to be added to a multicast groupです。これはかなりそれを記述するPython example

しかし、ルータはブロードキャストとマルチキャストをルーティングしないことに注意してください。したがって、あなたはインターネット上でそれを使用することはできません。プロジェクトでインターネットを使用する必要がある場合は、クライアントがブラウザの場合はTCP(またはWebSocket)を使用し、手動で「グループ」にメッセージを送信することをお勧めします。

1

実際にPerfect-KafkaまたはPerfect-Mosquitto(メッセージキュー)が必要なのは、サーバーがライブストリームをクライアント側のサブスクライバに公開できることです。低レベルのソケットは、あなたの要求を簡単に満たすことはできません。

関連する問題