При отправке сообщения используйте определенный порт, например, UDP_PORT=8765
, в противном случае, если для UDP_PORT
установлено значение 0, система выберет для вас случайный порт.
Используйте IP-адрес хоста получателя в скрипте отправителя и привязайте к любому интерфейсу в скрипте получателя.
На принимающей стороне использовать тот же номер порта UDP, который настроен в сценарии отправителя.
приемник:
import socket
UDP_IP = "0.0.0.0"
UDP_PORT = 8543
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
Отправитель:
import socket
UDP_IP = "<ip_address_of_receiver>"
UDP_PORT = 8543
MESSAGE = "Hi, can you listen to this?"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
Помимо настройки адресов UDP, на стороне Python проблем нет.
Об ошибке:
[Errno 10049] The requested address is not valid in its context
Обычно это происходит из-за попытки привязаться к адресу, который недопустим для локального компьютера: поэтому кажется, что адрес обратной связи 127.0.0.1 не настроен на вашем компьютере.
Расследуйте на стороне системного администратора, например, проверьте, включен ли на вашем компьютере сетевой стек IPv4.