Как найти локально доступный порт UDP с Unix Sockets API - PullRequest
1 голос
/ 10 ноября 2008

У меня есть приложение, в котором потенциально у меня много процессов, которые должны отправить сообщение одному процессу. Я подумал, что наиболее целесообразный способ сделать это - просто послать дейтаграмму UDP.

При открытии сокета мне нужно указать, какой порт слушать. Поскольку я просто хочу запустить и забыть дейтаграмму UDP, я бы хотел, чтобы ОС выбрала доступный порт. Я бы предпочел не охотиться за ним, особенно потому, что во многих случаях мой процесс может выполняться. Есть ли способ, с помощью которого я могу сказать ОС просто выбрать доступный порт (или еще лучше, даже не открывать сокет прослушивания), чтобы запустить и забыть мою UDP-дейтаграмму?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2008

Да. Укажите 0 в качестве порта. ОС выберет для вас доступный порт.

0 голосов
/ 10 ноября 2008

Ответ на «проблему», а не на «вопрос»

Если все процессы работают на одном компьютере, возможно, вы захотите просмотреть общие файлы или другие средства связи, кроме сетевого стека.

Я бы посоветовал вам изучить опции в библиотеке Interprocess Boost http://www.boost.org/doc/libs/1_37_0/doc/html/interprocess.html

Краткое руководство здесь: http://www.boost.org/doc/libs/1_37_0/doc/html/interprocess/quick_guide.html

В частности, я предлагаю вам использовать именованный канал или разделяемую память между вашими процессами.

...