HTTPURLConnection端口号分配

HTTPURLConnection port number assignment

我正在使用 HTTPURLConnection 并想知道端口问题是如何处理的?我的意思是 class 在后台使用套接字,但客户端套接字的端口号是如何在内部分配的?有什么想法吗?

感谢

不是。这完全取决于操作系统。

创建套接字时,您必须考虑是要打开服务器套接字还是客户端套接字。

服务器套接字已打开并坐在那里等待传入请求以启动 "conversation"。所以它需要一个客户端已知的端口号。出于这个原因,一些服务具有 "well-known ports",例如 HTTP 是端口 80 等

创建客户端套接字并开始联系服务器套接字。在这种情况下,服务器不需要提前知道客户端端口号——它会在第一个传入请求中收到它。因此,当打开客户端套接字时,操作系统只会从未使用端口列表中随机选择一个端口(查找 "ephemeral port"),并通常在会话结束后关闭它。

情况类似于 ip-addresses:客户端需要知道服务器的 ip-address 才能联系它,但服务器不需要知道每个客户端的 ip-address。