#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 (), но я не копировал его сюда. Извините за это. Видите ли вы что-то еще, что может вызвать проблему?