Как отправить ответ UDP другому клиенту (а не тому, который отправил исходное сообщение) - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь отправить UDP-ответ на другой IP-адрес, с которого исходное сообщение не получено.

Когда я использую следующий код, его ошибка:

import socket

localIP     = "127.0.0.1"
localPort   = 6666
bufferSize  = 1024

msgFromServer       = "Hello UDP Client"
bytesToSend         = str.encode(msgFromServer)

# Create a datagram socket
UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)

# Bind to address and ip
UDPServerSocket.bind((localIP, localPort))

print("UDP server up and listening")

# Listen for incoming datagrams
while(True):
    bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
    message = bytesAddressPair[0]
    address = bytesAddressPair[1]
    clientMsg = "Message from Client:{}".format(message)
    clientIP  = "Client IP Address:{}".format(address)

    print(clientMsg)
    print(clientIP)
    new_address = ( '10.124.1.2', 6666 )
    # Sending a reply to client
    UDPServerSocket.sendto(bytesToSend, new_address)

Я получаю следующую ошибку:

UDP server up and listening
Message from Client:[

|x
Client IP Address:('127.0.0.1', 54370)
Traceback (most recent call last):
  File "fake.py", line 55, in <module>
    UDPServerSocket.sendto(bytesToSend, new_address)
socket.error: [Errno 22] Invalid argument

Когда я пытаюсь установить новый IP-адрес в new_address его провал. Может кто-нибудь подскажите, пожалуйста, как перенаправить сообщение на новый IP, который не является первоначальным клиентом. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...