Трансляция UDP не работает, в чем проблема?

#python #sockets #networking

#python #сокеты #сеть

Вопрос:

Я запускаю код, который должен отправлять «Привет» в широковещательной передаче, дело в том, что он не работает, и я не знаю почему. Вот код:

 import socket  

def main():
    searcher_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    searcher_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    searcher_socket.sendto("Hey", ("255.255.255.255", 9010))
    response, address = searcher_socket.recvfrom(1024)
    print response

main()
  

Я проверил в Wireshark, чтобы проверить, выходит ли что-нибудь с компьютера, но, похоже, ничего не выходит..введите описание изображения здесь

Кто-нибудь может помочь, пожалуйста? Заранее спасибо

Редактировать: я протестировал код на другом компьютере, который подключен к сети по кабелю, а не по Wi-Fi, и это сработало. Эти два компьютера используют одну и ту же сеть. Что может быть причиной того, что код работает на одном компьютере и завершается сбоем на другом?

Второе редактирование — Решение: я нашел решение. Поскольку компьютер подключен через Wi-Fi, для трансляции вам необходимо сначала привязать сокет к вашему IP-адресу.

 import socket  

def main():
    searcher_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    searcher_socket.bind(("192.168.1.11", 40400)) # 192.168.1.11 is my computer ip address
    searcher_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    searcher_socket.sendto("Hey", ("255.255.255.255", 9010))
    response, address = searcher_socket.recvfrom(1024)
    print response

main()
  

Комментарии:

1. Это один из IP-адресов вашего компьютера. Вам нужно привязаться к адресу, по которому вы хотите отправлять широковещательные рассылки, если это не маршрут по умолчанию.

2. Вы устранили свою проблему? У меня похожая проблема

Ответ №1:

В опубликованном вами коде функция main не вызывается. Добавить main() вызов

Комментарии:

1. Есть вызов main (), но я не копировал его сюда. Извините за это. Видите ли вы что-то еще, что может вызвать проблему?