GNU/Linux >> Znalost Linux >  >> Linux

Jak lokálně vysílat zprávu pomocí soketů UDP?

Server by neměl být vázán na adresu, kterou získáte z getaddrinfo , místo toho by měl být vázán na 127.255.255.255 (pro rozhraní zpětné smyčky).

Hotový příklad vysílacího serveru/klienta naleznete na http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html


Unixové doménové sockety nepodporují multi-/broadcasting.

Můžete vysílat na místním rozhraní 127.0.0.1.


I když to původní otázka výslovně neříká, domnívám se, že původní tazatel chtěl „vysílat“ do více aplikací běžících na stejné instanci operačního systému (stejný počítač jako staré časovače).

To je podpořeno použitím 'SO_REUSEADDR' v příkladu posluchače a následnými komentáři Yuviho a nakonec návrhem na použití IP multicast.

Původní otázka by měla být objasněna.

Domnívám se, že distribuce paketů s více vazebnými moduly na jednom portu UDP se při použití SO_REUSEADDR mezi operačními systémy liší. Moje zkušenost s nedávným systémem Windows je taková, že jediný „vazač“ dostane výhradně všechny pakety, dokud neuvolní svou vazbu. pořadač je vybrán a prezentovány všechny přijaté pakety, dokud se neuvolní, a tak dále...

To se zjevně liší od nedávných linuxových jader, jak je vysvětleno v tomto odkazu:https://stackoverflow.com/a/14388707/86375Zdá se, že tato stránka tvrdí, že Linux bude opakovaně přijímat pakety mezi více spojovacími moduly.

Konečný výsledek, pokud doufáte, že pošlete mnoha lidem pomocí jediného odeslaného datagramu jako původní plakát, a pokusíte se použít IP unicast, nikoli IP multicast, můžete být zklamáni. (Moje zkušenost a odkaz výše ukazuje, že můžete svázat více, ale to neznamená vícenásobné doručení přijatých datagramů, ani na Linuxu nebo Windows)

Původní plakát měl zkusit použít vícesměrové vysílání.


Linux
  1. Jak SSH na server pomocí jiného serveru?

  2. Jak se má strace používat?

  3. Jak podložit soubor pomocí FF pomocí dd?

  1. Jak odeslat zprávu Xmpp pomocí příkazového řádku?

  2. CentOS / RHEL 6 :Jak nastavit úložiště yum pomocí lokálně připojeného DVD

  3. Jak trasovat Python skripty pomocí trace.py

  1. Kolik z Linuxu bych se měl naučit, abych mohl nasadit webové stránky pomocí LAMP?

  2. Jak se vyhnout varovné zprávě „jsou stejný soubor“ při použití cp v Linuxu?

  3. Jak používat dos2unix?