Как я могу найти и зарезервировать доступный порт для другого потока? - PullRequest
1 голос
/ 15 марта 2011

Я пытаюсь создать два компонента, которые взаимодействуют через сокеты UDP.Компонент 1 находится в главном потоке, а компонент 2 - во вторичном.Несколько копий этого приложения могут быть запущены на одном компьютере одновременно, поэтому я не могу использовать фиксированные порты.Программу также нужно запускать как в Windows, так и в Linux.

Я пытался сделать это, привязав 2 QUdpSockets, указав порт в 0 (попросив Qt выбрать для меня свободный порт).Затем я передаю первый параметр QUdpSocket и параметры второго сокета компоненту 1, предоставляя все необходимое для отправки и получения.Что касается Компонента 2, я не думаю, что могу передать QUdpSocket через границу потока, поэтому я передаю только параметры и конструирую + связываю сокет во вторичном потоке.

Однако привязка сокета ввторичный поток не работает.Предположительно, потому что сокет в основном потоке уже связан с тем же портом.

Можно ли как-то решить эту проблему, зная оба порта до создания любого объекта?

1 Ответ

1 голос
/ 15 марта 2011

Я не думаю, что смогу передать QUdpSocket через границу потока

Можешь, так и сделай. Только не используйте его одновременно в обеих темах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...