想象一下,客户端有一个侦听端口 80 的套接字。这个套接字可以连接到侦听其他不同端口的服务器套接字吗?或者服务器也必须监听端口 80?
我指的是 AF_INET 类型的网络套接字。
没有要求 TCP 连接两端的端口号必须相同。事实上,他们很少这样做。
服务器套接字(正在侦听的套接字)需要绑定到一个已知的端口号(例如 HTTP 的 80),以便客户端可以知道连接到哪里。当客户端套接字与服务器建立连接时,它通常随机选择一个可用的本地端口号。客户端确实可以选择在连接之前绑定到特定端口,但这不是必需的。
TCP 套接字由 4 个值定义:本地 IP、本地端口、远程 IP、远程端口。因此,您可以有多个客户端套接字(都具有相同的本地 IP 但具有不同的端口),每个套接字都连接到给定的远程 IP 和端口。