我的源代码如下: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上网,这个服务器是内部网用的,没有直接连到外网...如果连外网要通过网关..
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上网,这个服务器是内部网用的,没有直接连到外网...如果连外网要通过网关..
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); } }
主要是在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;
}
}
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文太差..-__-!
LoopbackAddress回送地址