Comment trouver un port UDP disponible localement avec l'API Unix Sockets
Question
J'ai une application dans laquelle plusieurs processus doivent potentiellement envoyer un message à un processus. J’imaginais que le moyen le plus opportun de le faire serait d’envoyer un datagramme UDP.
Lors de l'ouverture d'un socket, je dois spécifier le port d'écoute. Comme je veux juste tirer et oublier le datagramme UDP, j'aimerais simplement que le système d'exploitation choisisse un port disponible. Je préférerais ne pas avoir à en rechercher un, en particulier car plusieurs instances de mon processus peuvent s'exécuter. Existe-t-il un moyen de dire au système d'exploitation de choisir simplement un port disponible (ou mieux encore, même pas d'ouvrir une prise d'écoute) pour déclencher et oublier mon datagramme UDP?
La solution
Oui. Spécifiez 0 comme port. Le système d'exploitation choisira un port disponible pour vous.
Autres conseils
Répondre au " Problème " plutôt que la "Question"
Si tous les processus fonctionnent sur le même PC, vous pouvez envisager des fichiers partagés ou un autre moyen de communication autre qu'une pile réseau.
Je vous suggérerais d'explorer les options de la bibliothèque Interprocess de Boost. http://www.boost.org/doc/libs/ 1_37_0 / doc / html / interprocess.html
Guide rapide ici: http://www.boost.org/doc/ libs / 1_37_0 / doc / html / interprocess / quick_guide.html
Plus précisément, je vous suggère d'utiliser un canal nommé ou une mémoire partagée entre vos processus.