Проблема UDP Broadcast IP в Windows, это не привязка - PullRequest
0 голосов
/ 30 апреля 2019

"Широковещательный IP-адрес должен быть настроен программно, заменив последнее (4-е) десятичное число на 255 в IP-адресе хоста. Например, если ваш IP-адрес равен 192.168.2.34, вам необходимо выполнить широковещательную передачу на IP-адрес 192.168.2.255. "

Я использую для кодирования на MacOS, и он работает, но в Windows выдает ошибку;

Строка 15, soket.bind ((HOST, PORT)) [WinError 10049]запрашиваемый адрес недопустим в его контексте

serviceSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
serviceSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

ip = socket.gethostbyname(socket.gethostname()).split(".")
ip = "{}.{}.{}.255".format(ip[0],ip[1],ip[2])

HOST = ip
PORT = 5000
soket.bind((HOST,PORT))

Но когда я использую, как это;(В Windows)

serviceSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
serviceSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
ip = socket.gethostbyname(socket.gethostname())
HOST = ip
PORT = 5000
soket.bind((HOST,PORT))

Я могу перехватывать сообщения UDP Broadcast на порту 5000.

...