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
。
- Guava EventBus中的注释与接口
- Java – 从缓冲读取器(从套接字)读取正在暂停线程
- 无法构造javafx.application.Application实例
- 如何在使用Android Gradle Plugin进行编译时添加java编译器选项?
- 常春藤或ivyDE可以在Eclipse中自动将相关的jar添加到JAVA构建路径库中吗?
- 根上下文和调度程序servlet上下文到底是如何进入Spring MVC Web应用程序的?
- 头脑风暴:奇怪的JPA问题,可能是classpath或jar版本问题?
- 为什么不能将Object 转换为String
- PowerMock Mockito:如何模拟所有静态方法?