Como encontrar uma porta UDP disponível localmente com unix Sockets API
Pergunta
Eu tenho um aplicativo onde eu tenho potencialmente muitos processos devem enviar uma mensagem para um processo. Imaginei que a maneira mais conveniente de fazer isso seria apenas para enviar um datagrama UDP.
Ao abrir um soquete, eu preciso especificar a porta para ouvir. Como eu só quero fogo e esquecer o datagrama UDP, eu gostaria de ter apenas o sistema operacional escolher uma porta disponível. Eu prefiro não ter que caçar para um, especialmente porque muitos casos de meu processo pode ser executado. Existe uma maneira que eu posso dizer ao sistema operacional para escolher apenas uma porta disponível (ou melhor ainda, nem mesmo abrir um socket de escuta) ao fogo e esquecer o meu datagrama UDP?
Solução
Sim. Especificar 0 como a porta. O sistema operacional irá escolher uma porta disponível para você.
Outras dicas
Respondendo o "problema" em vez de "Pergunta"
Se todos os processos estão operando no mesmo PC, você pode querer olhar para arquivos compartilhados ou algum outro meio de outros do que uma pilha de rede de comunicações.
Eu sugiro que você explorar as opções na biblioteca Interprocess Boost http://www.boost.org/doc/libs/ 1_37_0 / doc / html / interprocess.html
Guia rápido aqui: http://www.boost.org/doc/ libs / 1_37_0 / doc / html / interprocess / quick_guide.html
Especificamente, eu sugiro que você use um pipe nomeado ou de memória compartilhada entre os processos.