GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich Nachrichten über lokale UDP-Sockets übertragen?

Der Server sollte nicht an eine Adresse gebunden sein, die Sie von getaddrinfo erhalten , stattdessen sollte es an 127.255.255.255 gebunden werden (für die Loopback-Schnittstelle).

Ein vorgefertigtes Beispiel für Broadcast-Server/Client finden Sie unter http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html


Unix-Domain-Sockets unterstützen kein Multi-/Broadcasting.

Sie können auf der lokalen Schnittstelle 127.0.0.1 senden.


Während die ursprüngliche Frage dies nicht ausdrücklich sagt, glaube ich, dass der ursprüngliche Fragesteller an mehrere Anwendungen "senden" wollte, die auf derselben Betriebssysteminstanz ausgeführt werden (derselbe Computer an Oldtimer).

Dies wird durch die Verwendung von 'SO_REUSEADDR' im Listener-Beispiel und nachfolgende Kommentare von Yuvi und schließlich einen Vorschlag zur Verwendung von IP-Multicast unterstützt.

Die ursprüngliche Frage sollte geklärt werden.

Ich glaube, dass die Paketverteilung mit mehreren Bindern an einem einzelnen UDP-Port zwischen den Betriebssystemen variiert, wenn SO_REUSEADDR verwendet wird. Meine Erfahrung mit neueren Windows-Versionen ist, dass ein einzelner „Binder“ ausschließlich alle Pakete erhält, bis sie ihre Bindung freigibt, zu welcher Zeit eine andere Binder wird ausgewählt und präsentiert alle empfangenen Pakete, bis sie freigibt, und so weiter...

Dies unterscheidet sich anscheinend von neueren Linux-Kerneln, wie in diesem Link erklärt:https://stackoverflow.com/a/14388707/86375Diese Seite scheint zu behaupten, dass Linux Pakete zwischen mehreren Bindern im Round-Robin-Verfahren empfängt.

Das Endergebnis, wenn Sie hoffen, mit einem einzigen gesendeten Datagramm wie das ursprüngliche Poster an viele zu senden, und Sie versuchen, IP-Unicast und nicht IP-Multicast zu verwenden, werden Sie möglicherweise enttäuscht sein. (Meine Erfahrung und der Link oben zeigen, dass Sie mehrfach binden können, aber das impliziert nicht die mehrfache Zustellung empfangener Datagramme, weder unter Linux noch unter Windows)

Der Originalposter hätte es mit Multicast versuchen sollen.


Linux
  1. CentOS / RHEL 6 :So richten Sie das Yum-Repository mit einer lokal gemounteten DVD ein

  2. So verfolgen Sie Python-Skripte mit trace.py

  3. Wie viel von Linux sollte ich lernen, um Websites mit LAMP bereitzustellen?

  4. Wie vermeide ich die Warnmeldung „Sind die gleiche Datei“ bei der Verwendung von cp unter Linux?

  5. Wie benutzt man dos2unix?

So teilen Sie Dateien lokal unter Linux mit NitroShare

So mounten Sie Dropbox lokal mit Rclone unter Linux

So mounten Sie Google Drive lokal mit Rclone unter Linux

So senden Sie E-Mails lokal über die Eingabeaufforderung

Gewusst wie:Eine Einführung in die Verwendung von Git

Wie man mit PHP eine Verbindung zu MySQL herstellt