GNU/Linux >> Linux の 問題 >  >> Linux

UDP ソケットを使用してローカルでメッセージをブロードキャストする方法は?

getaddrinfo から取得したアドレスにサーバーをバインドしないでください 、代わりに 127.255.255.255 にバインドする必要があります (ループバック インターフェイス用)

ブロードキャスト サーバー/クライアントの既製の例については、http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html を参照してください。


Unix ドメイン ソケットは、マルチ/ブロードキャストをサポートしていません。

ローカル インターフェイス 127.0.0.1 でブロードキャストできます。


元の質問では明示的にそうは言っていませんが、元の質問者は、同じオペレーティング システム インスタンスで実行されている複数のアプリケーションに「ブロードキャスト」したかったと思います (同じコンピューターから古いタイマーへ)。

これは、リスナーの例での「SO_REUSEADDR」の使用、Yuvi によるフォローアップ コメント、および最後に IP マルチキャストを使用する提案によってサポートされています。

元の質問を明確にする必要があります。

SO_REUSEADDR を使用する場合、単一の UDP ポートで複数のバインダーを使用したパケットの分散は、オペレーティング システムによって異なると思います。バインダーが選択され、彼女が解放するまで、受信したすべてのパケットが表示されます...

このリンクで説明されているように、これは最近の Linux カーネルとは明らかに異なります:https://stackoverflow.com/a/14388707/86375このページは、Linux が複数のバインダー間でパケットをラウンドロビンで受信すると主張しているようです。

元の投稿者が行ったように単一の送信データグラムを使用して多数に送信することを希望し、IP マルチキャストではなく IP ユニキャストを使用しようとすると、最終結果はがっかりする可能性があります.(私の経験とリンク上記はマルチバインドできることを示していますが、これは受信したデータグラムのマルチ配信を意味するものではなく、Linux でも Windows でも)

元の投稿者は、マルチキャストを使用してみるべきでした.


Linux
  1. コマンドラインを使用してXmppメッセージを送信する方法は?

  2. CentOS / RHEL 6 :ローカルにマウントされた DVD を使用して yum リポジトリをセットアップする方法

  3. trace.py を使用して Python スクリプトをトレースする方法

  1. strace はどのように使用する必要がありますか?

  2. dos2unix の使い方

  3. xrdpを使用してリモートで開始されたセッションをローカルで再開する方法は?

  1. 別のサーバーを使用してサーバーにSSH接続する方法は??

  2. rm を使わずにファイルを削除するには?

  3. Ifconfig の使用をやめるべきですか?