gpt4 book ai didi

python-3.x - 操作系统错误 : [Errno 22] Invalid argument for udp connection

转载 作者:行者123 更新时间:2023-12-03 16:45:10 24 4
gpt4 key购买 nike

我本地电脑上的 udp 服务器和客户端。

cat server.py
import socket
MAX_BYTES =65535

def server():
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind(('127.0.0.1',10000))
print('Listening at {}'.format(sock.getsockname()))
while True:
data,address = sock.recvfrom(MAX_BYTES)
text = data.decode('ascii')
print('The client at {} says {!r} '.format(address,text))

if __name__ == "__main__":
server()

绑定(bind)端口 10000与本地主机- 127.0.0.1 ,并收听客户端发送的消息。
cat client.py
import socket
import time
from datetime import datetime
MAX_BYTES =65535

def client():
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind(('127.0.0.1',10001))
text = 'The time is {}'.format(datetime.now())
data = text.encode('ascii')
while True:
time.sleep(10)
sock.sendto(data,('127.0.0.1',10000))
print('The OS assinged me the address {}'.format(sock.getsockname()))

if __name__ == "__main__":
client()

在我的本地电脑上运行 server.py 和 client.py,服务器可以接收客户端发送的消息。

现在我改变 127.0.0.1在我的远程 vps_ip 的 client.py 行中。
sock.sendto(data,('127.0.0.1',10000))

进入
sock.sendto(data,('remote_ip',10000))

将 server.py 推送到我的 vps.Start client.py 在我的本地 pc 上,server.py 在远程 vps 上,启动它们。
在我的客户端中,出现错误信息:
  File "client.py", line 13, in client
sock.sendto(data,('remote_ip',10000))
OSError: [Errno 22] Invalid argument

如何使远程 ip 接收从我的本地客户端 pc 发送的消息?

最佳答案

可能发生的两件事:

  • 您没有正确传递远程 IP。确保您没有真正通过 'remote_ip'并将其替换为服务器的有效 IPv4 IP 地址字符串(IE:'192.168.0.100')。 (仅供引用,从技术上讲,您只需将 '0.0.0.0' 放在服务器上即可监听所有 IP 地址)
  • 您仍然可以将客户端绑定(bind)到 (127.0.0.1) 的本地地址,但将目标设置为有效的外部地址 (192.168.0.100)。删除 socket.bind客户端中的代码行来测试这个,你不应该需要它。

  • 如果这两个都不起作用,则添加 ping 的结果在客户端上运行并以服务器为目标的命令。

    关于python-3.x - 操作系统错误 : [Errno 22] Invalid argument for udp connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57671836/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com