使用不同端口号的客户端和服务器连接?

时间:2021-07-27 16:09:06

标签: sockets network-programming client-server port

我在 python 中使用套接字设置了一个客户端和一个服务器,我的客户端将数据发送到服务器,服务器执行操作,然后将一些数据返回给客户端。最初客户端和服务器都具有相同的端口号 (9999)。我目前的问题是我必须将服务器的端口更改为 19999,当我尝试运行时,它不起作用。如果客户端的端口也更改为 19999,则客户端能够发送数据,但是如果客户端是 9999 而服务器是 19999,则它不起作用,这正是我需要的。网络系统的新手,希望能提供任何有用的信息或建议链接。

客户端(左)和服务器(右)图片

enter image description here

1 个答案:

答案 0 :(得分:1)

通常,客户端将使用 ephemeral port 作为其本地端口,并连接到服务器端口。您的客户端代码正在尝试连接到端口 9999,该端口不是服务器端口,这解释了为什么它不工作。您需要连接到端口 19999,因为这是服务器正在侦听的端口。

使用未绑定的套接字会导致客户端在建立连接时为其本地地址选择一个临时端口。如果您希望客户端绑定到特定端口,请在调用 bind 之前使用 connect

# bind locally to 9999
local_addr = (host, 9999)
s.bind(local_addr)

# connect to 19999
remote_addr = (host, 19999)
s.connect(remote_addr)