【发布时间】:2017-06-09 21:37:42
【问题描述】:
假设客户端有一个正在侦听端口 80 的套接字。这个套接字可以与侦听其他不同端口的服务器套接字连接吗?还是服务器也必须监听 80 端口?
我指的是 AF_INET 类型的网络套接字。
【问题讨论】:
-
不清楚你想要完成什么。也许您应该先阅读一篇关于套接字的介绍性文章?
假设客户端有一个正在侦听端口 80 的套接字。这个套接字可以与侦听其他不同端口的服务器套接字连接吗?还是服务器也必须监听 80 端口?
我指的是 AF_INET 类型的网络套接字。
【问题讨论】:
没有要求 TCP 连接两端的端口号必须相同。事实上,他们很少这样做。
服务器套接字(正在监听的)需要绑定到一个已知的端口号(例如 HTTP 的 80),这样客户端才能知道连接到哪里。当客户端套接字与服务器建立连接时,它通常会随机选择一个可用的本地端口号。客户端确实可以选择在连接之前绑定到特定端口,但这不是必需的。
一个 TCP 套接字由 4 个值定义:本地 IP、本地端口、远程 IP、远程端口。因此,您可以有多个客户端套接字(都具有相同的本地 IP,但端口不同),每个套接字都连接到给定的远程 IP 和端口。
【讨论】:
accept 函数。