【问题标题】:Unable to fetch IP Address of machine无法获取机器的 IP 地址
【发布时间】:2018-12-11 15:39:42
【问题描述】:

我有一个 Java 应用程序,它需要特定机器的 IP 地址才能在 Ubuntu 中进行通信。我尝试使用 Jjava 函数InetAddress.getLocalHost().getHostAddress() 来获取所需机器的 IP 地址,但它返回的环回地址为 127.0.0.1。我系统的外部 IP 地址是 192.168.1.1。 有没有什么函数可以让我只检索后一个?

【问题讨论】:

  • 为什么?为什么你认为你需要自己机器的 IP 地址?你的意思是你需要得到另一台机器的IP地址吗?如果是这样,getLocalHost() 很难继续下去。
  • 你用谷歌搜索过这个吗?除此之外,这个社区可能已经回答了,请参考:stackoverflow.com/questions/2381316/…
  • 我有一个解决方案import java.net.InetAddress;导入java.net.*;导入 java.util.*;类 IPAddress { public static void main(String args[]) throws Exception { int i=0;枚举 en = NetworkInterface.getNetworkInterfaces(); while(en.hasMoreElements()){ //System.out.println(i); NetworkInterface ni=(NetworkInterface) en.nextElement();枚举 ee = ni.getInetAddresses();诠释 j = 0; while(ee.hasMoreElements()) { InetAddress ia= (InetAddress) ee.nextElement(); if(i==0 && j==1) { System.out.println(ia.getHostAddress()); } j++;}我++; } } }
  • 不要在 cmets 中发布代码。这是浪费时间。您可以亲眼看到它完全难以辨认。将其编辑到您的问题中。说到问题,你还没有回答我的任何问题。

标签: java ip loopback


【解决方案1】:
/**

The following code solved my problem


**/

import java.net.InetAddress;
import java.net.*;
import java.util.*;

class IPAddress
{
   public static void main(String args[]) throws Exception
   {

int i=0;    
Enumeration en = NetworkInterface.getNetworkInterfaces();
while(en.hasMoreElements()){

//System.out.println(i);
   NetworkInterface ni=(NetworkInterface) en.nextElement();
    Enumeration ee = ni.getInetAddresses();
int j=0;

while(ee.hasMoreElements()) {
        InetAddress ia= (InetAddress) ee.nextElement();
if(i==0 && j==1)
  {  System.out.println(ia.getHostAddress());

  } 

j++;}

i++;
 }

   }
}

【讨论】:

  • 仅适用于您需要的 IP 地址是第一个 NIC 的第二个 IP 地址的特定配置。这可能会在一夜之间在该主机上发生变化,而在另一台主机上则完全不同。这不是一个可行的解决方案。
  • EJP 先生 ....告诉我可行的解决方案..因为我需要在具有不同网络接口的不同主机中实现它
  • 告诉我的问题的答案。 为什么你需要你机器的本地地址?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 2011-07-22
相关资源
最近更新 更多