当前位置: 首页 > 知识库问答 >
问题:

在套接字中提供0.0.0.0作为本地地址时,IP Java使用什么

魏誉
2023-03-14

在Java建立TCP连接时,需要创建套接字。我使用下面的构造函数来创建套接字。公共套接字(InetAddress address,int port,InetAddress localAddr,int localPort)抛出IOException

根据Java API,localAddress应该是有效的InetAddress或null。当我提供0.0.0.0作为本地地址时,在本地计算机(如27.0.0.1和远程计算机)上建立连接将正常工作。

要在本地计算机上连接,套接字使用127.0.0.1;对于远程计算机,套接字使用P1P1接口地址作为本地地址。我不知道Java是如何找到合适的IP地址连接的。我查了Java的API,但没有发现任何东西。

共有1个答案

司马念
2023-03-14

Java什么都不用。它将您提供的内容直接传递给操作系统。我不认为0.0.0.0是连接套接字的有效本地地址,但如果它是inaddr_any,这意味着“使用任何本地IO地址”。

很少有在连接TCP套接字时需要指定本地地址或端口的情况。只需使用双参数构造函数即可。

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

  • 问题内容: 我想获取启动程序的计算机的IP地址,然后将其发送到客户端,但是我总是得到0.0.0.1而不是真实的IP地址(例如127.0.0.1)。 我目前可以获取端口,但无法获取IP地址。 我怎么才能得到它? 最好的解决方案是能够使用。这是我目前正在做的事情: 编辑: 我知道我的思维方式走错了路。所以我的问题是:获得自己的IP地址的最佳方法是什么? 问题答案: 当您将套接字设为0.0.0.0时,这

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

  • 我是FTPS客户端的新手,我正在尝试连接到笔记本电脑中创建的FTPS。我不知道某些方法的工作原理和它们的参数含义。例如,在我的代码中,我创建了一个FTPSClient,如下所示: 然后使用带有ip地址的connect()方法连接到服务器。 在每一步之后,我将使用检查回复代码。 在下面的代码中,我知道用户名=系统用户名密码=登录密码 在我的系统中的互联网信息服务(IIS)。用ssl创建了一个ftp服

  • 问题内容: 我有一个客户端-服务器分层的体系结构,客户端向服务器发出类似RPC的请求。我正在使用Tomcat托管servlet,并使用Apache HttpClient对其进行请求。 我的代码是这样的: 它在负载较轻的环境中效果很好,但是当我每秒发出数百个请求时,我开始看到这种情况- 有关如何解决此问题的任何想法?我猜想这与客户端尝试重用临时客户端端口有关,但是为什么会这样/我该如何解决?谢谢!

  • 问题内容: 我正在学习Java套接字编程。我使用以下语句连接到网站: 当我调试应用程序并查看s的内容时,我看到: 1)我想知道此本地端口7846的来源以及确切的含义。 2)如果网站的IP地址是2.21.246.97,为什么我不能仅在浏览器的地址栏中输入2.21.246.97来连接到该网站? 谢谢 问题答案: 这是本地套接字端口号。通常由系统分配。 请参阅什么是套接字?。 在客户端:客户端知道运行服