我的源代码如下:import java.net.InetAddress; 
import java.net.UnknownHostException;
import java.net.*;
class GetIP 
{
public static void main(String[] args) 
{
System.out.println("System User:"+System.getProperty("user.name")); try { 
InetAddress localhost = InetAddress.getLocalHost(); 
System.out.println 
("localhost: "+localhost.getHostAddress()); 
System.out.println 
("localhost: "+localhost.getHostName()); 

} catch(UnknownHostException uhe) { 
System.err.println 
("Localhost not seeable. Something is odd. "); 
} }
我在我本机windowXP下运行这个java没问题,可以得到我的内部ip:192.168.1.110于是我将其放到我们公司linux服务器下,运行的结果却是:ip为127.0.0.1!!!为什么啊??请有条件的朋友帮我试一试啊...是不是我们公司服务器配置的问题啊.....ps:我们公司是用adsl上网,这个服务器是内部网用的,没有直接连到外网...如果连外网要通过网关..

解决方案 »

  1.   

    给你看看这个,可能对你有用
    import java.net.*; public class NetTool{ InetAddress myIPaddress=null; InetAddress myServer=null; public static void main( String args[]){   NetTool mytool;   mytool=new NetTool();   System.out.println("Your host IP is: "+ mytool.getMyIP());   System.out.println("The Server IP is :"+mytool.getServerIP());  } //取得LOCALHOST的IP地址 public InetAddress getMyIP() {   try { myIPaddress=InetAddress.getLocalHost();}   catch (UnknownHostException e) {}   return (myIPaddress);  } //取得 www.sina.com 的IP地址 public InetAddress getServerIP(){   try {myServer=InetAddress.getByName("www.sina.com");}    catch (UnknownHostException e) {}   return (myServer);  } } 
      

  2.   

    在linux下之所以返回127.0.0.1,
    主要是在linux下返回的是/etc/hosts中配置的localhost的ip地址,
    而不是网卡的绑定地址Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces();
          InetAddress ip = null;
       while(netInterfaces.hasMoreElements())
       {
        NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement();
        System.out.println(ni.getName());
        ip=(InetAddress) ni.getInetAddresses().nextElement();
        if( !ip.isSiteLocalAddress() 
        && !ip.isLoopbackAddress() 
        && ip.getHostAddress().indexOf(":")==-1)
        {
         System.out.println("本机的ip=" + ip.getHostAddress());
         break;
        }
        else
        {
                       ip=null;
           }
       }
      

  3.   

    iCharlene() 的方法很牛比啊...取到了...不过不是很明白什么SiteLocalAddress什么是LoopbackAddress我改的程序如下:Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces();
    InetAddress ip = null;
    while(netInterfaces.hasMoreElements())
    {
             NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement();
    System.out.println(ni.getName());
    ip=(InetAddress) ni.getInetAddresses().nextElement();
    System.out.println("ip.isSiteLocalAddress():"+ip.isSiteLocalAddress());
    System.out.println("ip.isLoopbackAddress():"+ip.isLoopbackAddress());
    System.out.println("ip.getHostAddress():"+ip.getHostAddress());
    }
    结果:eth0
    ip.isSiteLocalAddress():true
    ip.isLoopbackAddress():false
    ip.getHostAddress():192.168.1.23
    lo
    ip.isSiteLocalAddress():false
    ip.isLoopbackAddress():true
    ip.getHostAddress():127.0.0.1
    谁能解释一下SiteLocalAddress和LoopbackAddress啊...英文的api文档看不明白啊..e文太差..-__-!
      

  4.   

    SiteLocalAddress本机地址
    LoopbackAddress回送地址