当前位置: 首页 > 面试题库 >

Java套接字-本地端口

闻人越
2023-03-14
问题内容

我正在学习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来连接到该网站?

谢谢


问题答案:

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

请参阅什么是套接字?。

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

关于第二个问题:

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



 类似资料:
  • 这就是我有点困惑的地方。 我在服务器端拿到的地址,有客户端连接的WiFi网络的公有地址(这是我预期的),还有一些端口号,基于我对NATs的理解,应该和客户端实际使用的端口号不一样,是用来翻译地址的。 但是,如果我在客户端上使用了getsockname()函数,则得到的端口号与服务器给出的端口号相同。

  • 我希望能够连接到需要智能卡的个人证书进行身份验证的https站点。我想我已经很接近让它工作了,但不知道如何克服这个例外: 由于合同关系,我不能共享我的代码,但这里有一个总结: 我创建了一个密钥库,其中包含从浏览器导出的所有证书。我使用此密钥存储作为SSLContext的信任存储。我非常肯定这个密钥库包含正确的CA证书来验证远程站点的证书,因为它修复了“无法找到请求目标的有效证书路径”的异常。 我可

  • 此函数创建sockaddr_in6: 基本上,如果地址是IPv4地址,我会在它前面加上,并将该族设置为af_inet。 这有可能做到。如果是,我做错了什么?

  • 我对Socket和ServerSocket端口用法感到困惑。Oracle关于套接字的Java教程是这样说的: 插座是什么? 通常,服务器运行在特定的计算机上,并具有绑定到特定端口号的套接字。服务器只是等待,监听套接字让客户机发出连接请求。在客户端:客户端知道服务器运行的机器的主机名和服务器侦听的端口号。要发出连接请求,客户端尝试在服务器的机器和端口上与服务器会合。客户端还需要向服务器标识自己,以便

  • 我最近一直在玩套接字,但是我遇到了一个问题…当我从服务器接收数据时,我得到一个“java.net.套接字异常:套接字关闭”异常。我没有在任何地方关闭套接字,事实上,我唯一使用关闭()的地方是扫描仪上从System.in读取文本; 以下是我的代码: 客户: 服务器: 数据包发送者: 客户端接收器: 数据包接收器:

  • 我正在尝试制作一个“messenger”(只是为了真正学习),我对Socket/ServerSocket还很陌生,目前正在制作网络部分。而且,我知道客户网络还不完善。我曾试图完成它,但我被难倒了。 ServerMain: 服务器网络(线程): } ClientMain: } 客户端网络(线程): 这是我得到的错误,当我启动服务器,然后客户端:它不应该说"消息收到",因为我实际上没有发送消息