2012-06-19 2 views
0

У меня есть приложение, которое использует QUdpSocket для отправки широковещательных пакетов. Машина, отправляющая пакеты, имеет несколько сетевых интерфейсов.Как указать сетевой интерфейс для использования QUdpSocket?

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

ответ

0

Каждая подсеть имеет собственный широковещательный адрес. Поэтому я думаю, что вы можете отправлять широковещательные пакеты «прямо» на адреса, такие как 10.255.255.255 или 192.168.255.255.

1

Вы фактически выбираете, какую сеть прослушивать в первом аргументе функции привязки, адреса. Если вы выбираете, например, QHostAddress::AnyIPv4, это означает, что независимо от того, из какого интерфейса (лучше сказать, в результате чего IP-адрес) пакет получен, программа должна его поймать. В противном случае вы можете ввести IP-адрес (или широковещательный адрес), которому должен быть отправлен пакет.

Для отладки и проверок его можно использовать netstat в список открытых портов, как описано здесь: https://superuser.com/questions/529830/get-a-list-of-open-ports-in-linux

В результате NETSTAT команды, Local Address является то, что вы ищете, указав, какие адреса прослушиваемых ,

ПРИМЕЧАНИЕ. Адрес локального адреса в локальном адресе (например, 0.0.0.0 или 127.0.0.1) означает, что любой локальный адрес является приемлемым.