Cómo encontrar un puerto UDP disponible localmente con unix Sockets API
Pregunta
Tengo una aplicación donde potencialmente tengo muchos procesos que deben enviar un mensaje a un proceso. Pensé que la forma más conveniente de hacer esto sería enviar un datagrama UDP.
Al abrir un socket, necesito especificar qué puerto escuchar. Como solo quiero disparar y olvidar el datagrama UDP, me gustaría que el sistema operativo elija un puerto disponible. Prefiero no tener que buscar uno, especialmente porque muchas instancias de mi proceso pueden estar ejecutándose. ¿Hay alguna manera de decirle al sistema operativo que solo elija un puerto disponible (o mejor aún, ni siquiera abra un socket de escucha) para disparar y olvidar mi datagrama UDP?
Solución
Sí Especifique 0 como el puerto. El sistema operativo elegirá un puerto disponible para usted.
Otros consejos
Respondiendo el " Problema " en lugar de la " Pregunta "
Si todos los procesos están funcionando en la misma PC, es posible que desee buscar archivos compartidos o algún otro medio de comunicación que no sea una pila de red.
Te sugiero que explores las opciones en la biblioteca Interprocess de Boost http://www.boost.org/doc/libs/ 1_37_0 / doc / html / interprocess.html
Guía rápida aquí: http://www.boost.org/doc/ libs / 1_37_0 / doc / html / interprocess / quick_guide.html
Específicamente, le sugiero que use una tubería con nombre o memoria compartida entre sus procesos.