假设客户端有一个监听端口 80 的套接字。这个套接字可以连接到监听其他不同端口的服务器套接字吗?或者服务器也必须监听端口 80?
我指的是 AF_INET 类型的网络套接字。
最佳答案
不要求 TCP 连接两端的端口号必须相同。事实上,他们很少。
服务器套接字(正在监听的那个)需要绑定(bind)到一个已知的端口号(例如 HTTP 的 80),以便客户端可以知道连接到哪里。当客户端套接字与服务器建立连接时,它通常会随机选择一个可用的本地端口号。客户端确实可以选择在连接之前绑定(bind)到特定端口,但这不是必需的。
TCP 套接字由 4 个值定义:本地 IP、本地端口、远程 IP、远程端口。因此,您可以有多个客户端套接字(都具有相同的本地 IP 但端口不同),每个都连接到给定的远程 IP 和端口。
关于两个连接的套接字可以监听不同的端口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839187/