我对 UDP 非常陌生,我正在尝试使用 python 连接两个设备。它们都在同一网络上运行。我编写了适用于同一设备的代码:
服务器:
import socket
# Create a UDP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind the socket to the server address and port
server_address = '192.168.1.1' # Replace with the server's IP address
server_port = 12345
server_socket.bind((server_address, server_port))
print(f"Server is running on {server_address}:{server_port}")
try:
while True:
# Wait for a message
print("\nWaiting to receive a message...")
data, address = server_socket.recvfrom(4096)
print(f"Received {len(data)} bytes from {address}")
print(data.decode())
if data:
sent = server_socket.sendto(data, address)
print(f"Sent {sent} bytes back to {address}")
finally:
print("Closing the server socket")
server_socket.close()
客户:
import socket
# Create a UDP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = '192.168.1.2' # Replace with the server's IP address
server_port = 12345
try:
# Send data
message = 'This is the message. It will be echoed back!'
print(f"Sending: {message}")
sent = client_socket.sendto(message.encode(), (server_address, server_port))
# Receive response
print("Waiting to receive")
data, server = client_socket.recvfrom(4096)
print(f"Received: {data.decode()}")
finally:
print("Closing the client socket")
client_socket.close()
当我尝试在具有相同 IP 的另一台计算机上使用客户端代码时,出现错误:
"Traceback (most recent call last):
File "Desktop\client.py", line 9, in <module>
server_socket.bind((server_address, server_port))
OSError: [WinError 10049] The requested address is not valid in its context"
如何解决这个问题?
非常感谢您的宝贵时间
更新:将两台 Windows 计算机的连接设置为私有使错误消失,但是现在两台计算机都停留在“接收”消息上。
好的成功了。
首先,我确保两个 Windows 设备都可以在网络中发现。我将它们设置为私人。 其次,我在入站和出站端口上添加了端口 12345。 第三,我将两个设备的IP更改为相同(服务器IP)。虽然该代码也适用于服务器 ip 设置为空 ('') 的情况