При выполнении сетевой трансляции из Python я получаю следующее: OSError: [Errno 101] Network is unreachable
Мой код выглядит следующим образом:
def send(ip, message):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, 4601))
try:
sock.sendall(message)
response = sock.recv(1024)
finally:
sock.close()
if response:
return response
else:
return False
Я заменил ip на "
В случае широковещательной передачи Вы не должны использовать TCP скорее, необходимо использовать UDP. С другой стороны необходимо использовать sendto()
метод вместо connect()
. sendto()
используется для отправки данных в определенный адрес, который является "широковещательным" адресом в нашем случае. Таким образом, следующее должно работать:
import socket
message = "Hello"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(message, ('<broadcast>', 50000))