Java套接字 – 本地端口

我正在学习Java编程。 我使用以下声明连接到网站:

s = new Socket("www.nba.com", 80); 

当我调试应用程序并查看s的内容时,我看到:

 Socket[addr=www.nba.com/2.21.246.97,port=80,localport=7846] 

1)我想知道这个本地端口7846来自哪里以及它究竟是什么。

2)如果网站的IP地址是2.21.246.97,为什么我只能在浏览器的地址栏中输入2.21.246.97才能连接到网站?

谢谢

它是本地套接字端口号。 它通常由系统分配。

看什么是sockets? 。

在客户端:客户端知道运行服务器的计算机的主机名以及服务器正在侦听的端口号。 要发出连接请求,客户端会尝试与服务器的计算机和端口上的服务器进行会合。 客户端还需要向服务器标识自己,以便绑定到在此连接期间将使用的本地端口号。 这通常由系统分配。

至于第二个问题:

我假设这个IP地址是您在查找www.nba.com时获得的DNS服务器(我的不同)。 问题可能是此地址的HTTP服务器为多个虚拟主机提供服务和/或它关心您的浏览器发送的Host头。 在您的情况下,它是IP地址而不是www.nba.com