Я пытаюсь отправить 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, который не является первоначальным клиентом. Спасибо.