Wie ein lokal verfügbar UDP-Port mit Unix-Sockets-API finden
Frage
Ich habe eine Anwendung, wo ich möglicherweise viele Prozesse müssen eine Nachricht an einen Prozess senden. Ich dachte, die zweckmäßigste Art und Weise, dies zu tun wäre, nur einen UDP-Datagramm senden.
Wenn Sie eine Steckdose zu öffnen, muss ich angeben, welcher Port zu hören. Wie ich möchte nur das UDP-Datagramms feuern und vergessen, würde Ich mag nur das Betriebssystem einen verfügbaren Port auswählen müssen. Ich würde lieber nicht für eine Jagd, vor allem so viele Instanzen von meinem Prozess ausgeführt werden können. Gibt es eine Möglichkeit ich das O nur sagen kann, um einen verfügbaren Port auswählen (oder besser noch, nicht einmal einen Socket öffnen) Feuer und meinen UDP-Datagramm vergessen?
Lösung
Ja. Geben Sie 0 als Port. Das Betriebssystem wird einen verfügbaren Port für Sie wählen.
Andere Tipps
Die Beantwortung des "Problems" und nicht die "Frage"
Wenn alle Prozesse auf dem gleichen PC arbeiten, könnten Sie in gemeinsam genutzten Dateien oder andere Mittel der Kommunikation andere als ein Netzwerk-Stack suchen.
Ich würde vorschlagen, Sie Inter Bibliothek die Optionen im Boost-suchen http://www.boost.org/doc/libs/ 1_37_0 / doc / html / interprocess.html
Kurzanleitung hier: http://www.boost.org/doc/ libs / 1_37_0 / doc / html / Inter / quick_guide.html
Insbesondere Ich schlage vor, Sie verwenden eine Named Pipe oder Shared Memory zwischen Prozessen.