Python UDP связь с локальными адресами (Ethe rnet порт к Ethe rnet порту) - PullRequest
1 голос
/ 20 января 2020

Мне нужна помощь с сокетами в python. Устройство (D) напрямую подключается через кабель Ethe rnet к адаптеру USB-to-Ehte rnet (eth1), подключенному к Raspberry Pi. ifconfig и выполнение sudo tcpdump -i eth1 показывают, что D связывается по IP-адресу 169.254.129.33. Когда я запускаю следующий код в Python, я не получаю ответ от D, хотя говорят, что отправленное сообщение вызывает ответ.

import socket

HOST = socket.gethostbyname(socket.gethostname())
PORT = 30444
D_IP = '169.254.129.33'

msg = 'Calling all IRC devices'

with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.sendto(msg.encode(), (D_IP, PORT))
    data, address = s.recvfrom(PORT)
    s.close()

print(address, ' replied: ', data.decode())

Похоже, что Python либо не отправляет msg через адаптер к D или IP-адресу D не тот, о котором я думал.

Как я могу сказать python, чтобы специально использовать адаптер USB-to-Ethe rnet для связи UDP? Как получить правильный IP-адрес D при подключении к Pi, а не к маршрутизатору?

PS: Надеюсь, с форматированием все в порядке, и мой Engli sh не так уж и плох.

...