OSError: [Errno 101] Network is unreachable

При выполнении сетевой трансляции из 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 на "" и вот тогда я получаю ошибку. Мой сервер прослушивает порт 4601, поэтому я не понимаю, что происходит. Я также заменил его на фактический широковещательный адрес сети, указанный в network-manager, и все равно ничего не получил.

1
задан 29 January 2015 в 16:06

1 ответ

В случае широковещательной передачи Вы не должны использовать 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))
1
ответ дан 11 November 2019 в 02:26

Другие вопросы по тегам:

Похожие вопросы: