当在 Socket 中提供 0.0.0.0 作为 localAddress 时,IP java 使用什么

What IP java use when provide 0.0.0.0 as localAddress in Socket

在java建立TCP连接,我们需要创建socket。 我使用下面的构造函数来创建套接字。 public Socket(InetAddress address, int port,InetAddress localAddr,int localPort) throws IOException

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

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

Java 没有使用任何东西。它将您提供的内容直接传递给操作系统。我不相信 0.0.0.0 是已连接套接字的有效本地地址,但如果它是 INADDR_ANY,则意味着 'use any local IO address'.

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