2008-11-09 8 views
1

J'ai une application où j'ai potentiellement de nombreux processus qui doivent envoyer un message à un processus. J'ai pensé que le moyen le plus rapide de le faire serait de simplement envoyer un datagramme UDP.Comment trouver un port UDP disponible localement avec unix Sockets API

Lors de l'ouverture d'une socket, j'ai besoin de spécifier quel port écouter. Comme je veux juste tirer et oublier le datagramme UDP, je voudrais juste que le système d'exploitation choisisse un port disponible. Je préférerais ne pas avoir à en chercher un, d'autant plus que beaucoup d'instances de mon processus peuvent être en cours d'exécution. Y a-t-il un moyen de dire au système d'exploitation de choisir un port disponible (ou mieux encore, même pas d'ouvrir une prise d'écoute) pour tirer et oublier mon datagramme UDP?

+0

Je ne comprends pas la question. Pourriez-vous clarifier ce processus S (envoi) et processus (R) de réception et ce que vous pensez qu'ils devraient faire? Je pense que vous omettez certaines parties du protocole. –

Répondre

3

Oui. Indiquez 0 comme port. Le système d'exploitation choisira un port disponible pour vous.

+0

Ah, j'ai pensé que c'était quelque chose d'aussi simple. Merci! –

+0

Notez que vous aurez toujours besoin d'un mécanisme pour informer les autres processus de la socket à transmettre! – Alnitak

+0

Eh bien, mon processus de réception a un numéro de socket statique. Mais les processus d'envoi ne s'attendent pas à obtenir une réponse. –

0

Répondre au « problème » plutôt que la « question »

Si tous les processus fonctionnent sur le même PC, vous pouvez regarder dans les fichiers partagés ou d'autres moyens de communication autre qu'une pile de mise en réseau.

Je vous suggère d'explorer les options dans la bibliothèque Boost Interprocess 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 tube nommé ou la mémoire partagée entre vos processus.

+0

Les fichiers sont ce que j'ai en ce moment, mais je trouve que les processus sont sauvegardés dans le système de fichiers en cas de fort trafic. Comme c'est un exécutable que je lance pour chaque visite, les grandes bibliothèques sont sorties, tout comme tout ce qui nécessite beaucoup de frais généraux à configurer. –

Questions connexes