我正在尝试开发一个系统,其中有不同的节点运行在不同的系统或在同一系统的不同端口上。

现在,所有节点都创建了一个套接字,将目标IP作为称为引导节点的特殊节点的IP。然后,节点创建自己的ServerSocket并开始侦听连接。

引导节点维护一个节点列表,并在查询时返回它们。

现在我需要的是节点必须将其IP注册到引导节点。我尝试使用cli.getInetAddress()一旦客户端连接到引导节点的ServerSocket,但这不起作用。

我需要客户端注册其PPP IP,如果可用; 否则,局域网IP(如果可用); 否则,它必须注册127.0.0.1,假设它是同一台计算机。

使用代码:

System.out.println(Inet4Address.getLocalHost().getHostAddress());

or

System.out.println(InetAddress.getLocalHost().getHostAddress());

我的PPP连接IP地址是:117.204.44.192,但上面返回我192.168.1.2

EDIT

我正在使用以下代码:

Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
    NetworkInterface n = (NetworkInterface) e.nextElement();
    Enumeration ee = n.getInetAddresses();
    while (ee.hasMoreElements())
    {
        InetAddress i = (InetAddress) ee.nextElement();
        System.out.println(i.getHostAddress());
    }
}

我能够获得所有网络接口相关的所有IP地址,但我如何区分它们?这是我得到的输出:

127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19

是否有一种方法可以获得本地网络中所有有效IP地址的列表?

我指的是每个用户在网络中使用的所有IP地址。

我不完全明白我应该如何获得一个远程用户IP地址。

假设我有一个简单的请求路由,如:

app.get(/, function (req, res){
   var forwardedIpsStr = req.header('x-forwarded-for');
   var IP = '';

   if (forwardedIpsStr) {
      IP = forwardedIps = forwardedIpsStr.split(',')[0];  
   }
});

上面的方法是否正确,以获得真实的用户IP地址或有更好的方法? 那么代理呢?

我有一个简单的Node.js程序在我的机器上运行,我想获得我的程序正在运行的PC的本地IP地址。我如何在Node.js中获得它?

我正在寻找一个命令行解决方案,将返回我的主(第一个)IP地址的本地主机,而不是127.0.0.1

该解决方案至少适用于Linux (Debian和RedHat)和OS X 10.7+

我知道在这两个平台上都可以使用ifconfig,但是它的输出在这些平台之间并不一致。

我在我的mac上使用Jekyll和Vagrant。我发现Jekyll服务器将绑定到0.0.0.0:4000而不是127.0.0.1:4000。此外,宝石服务器将绑定到这个地址默认。我仍然可以通过http://localhost:port访问它。但对于Jekyll,似乎默认设置(例如0.0.0.0:4000)需要Internet访问。没有网络我无法运行Jekyll服务器。是小虫子吗?

我也用Vagrant。我在Vagrantfile中设置了端口转发(8080 => 4000),因为我在vagrantvirtual machine中安装了Jekyll,并在Macintosh下进行测试。如果我使用默认设置(0.0.0.0:4000),它可以工作。我可以通过http://localhost:8080从我的狩猎旅行中访问它。但是如果没有网络,我无法绑定0.0.0.0:4000。我使用jekyll服务器-H 127.0.0.1将服务绑定到127.0.0.1:4000,然后我无法通过http://localhost:8080访问它。

有人能解释一下0.0.0.0,127.0.0.1和localhost之间的区别吗?有人能解释一下为什么这种差异会导致这个问题吗?

如何从控制器内确定给定请求的IP地址?例如(在快递中):

app.post('/get/ip/address', function (req, res) {
    // need access to IP address here
})

正如标题所示,我需要能够检索docker托管的IP地址以及从主机到容器的portmap,并在容器内部完成这些工作。

我想在PHP中存储$_SERVER["REMOTE_ADDR"]返回的数据到一个DB字段,非常简单的任务,真的。问题是我找不到关于IPv6地址的文本表示的最大长度的任何适当的信息,这是一个web服务器通过$_SERVER["REMOTE_ADDR"]提供的。

我对将文本表示转换为地址通常编码的128位不感兴趣,我只想知道存储$_SERVER["REMOTE_ADDR"]返回的任何IPv6地址最多需要多少字符。