Как найти локально доступный порт UDP с помощью Unix Sockets API

StackOverflow https://stackoverflow.com/questions/276647

  •  07-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Краткое руководство здесь: http://www.boost.org/doc/ ЛИЭС / 1_37_0 / DOC / HTML / межпроцессного / quick_guide.html

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top