两个连接的套接字可以监听不同的端口吗?

标签 c sockets unix

假设客户端有一个监听端口 80 的套接字。这个套接字可以连接到监听其他不同端口的服务器套接字吗?或者服务器也必须监听端口 80?

我指的是 AF_INET 类型的网络套接字。

最佳答案

不要求 TCP 连接两端的端口号必须相同。事实上,他们很少。

服务器套接字(正在监听的那个)需要绑定(bind)到一个已知的端口号(例如 HTTP 的 80),以便客户端可以知道连接到哪里。当客户端套接字与服务器建立连接时,它通常会随机选择一个可用的本地端口号。客户端确实可以选择在连接之前绑定(bind)到特定端口,但这不是必需的。

TCP 套接字由 4 个值定义:本地 IP、本地端口、远程 IP、远程端口。因此,您可以有多个客户端套接字(都具有相同的本地 IP 但端口不同),每个都连接到给定的远程 IP 和端口。

关于两个连接的套接字可以监听不同的端口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839187/

相关文章:

linux - Unix/Linux 文件系统

c - 这个程序有什么错误?

c - 在C、linux中通过poll fd获取unix socket连接是否需要额外的参数或设置?

linux - 从文件中读取字符串并使用 bash 将它们存储在多个变量中

c - 为什么服务器在关闭客户端连接时进入无限循环

c# - 如果我发送太多字节,c# tcp 套接字将如何阻塞?

unix - 使用awk提取具有多个名称的列数据(UNIX)

c++ - 文本编辑器使用什么语言?

c++ - 在此范围内未声明“无限”

c - 为什么我会收到段错误 : 11?