try
{
InetAddress myComputer=InetAddress.getLocalHost();

  //这一段代码可以从域名中分析出所有的IP地址,最后一个IP地址是外网地址  
InetAddress[] a=InetAddress.getAllByName(myComputer.getHostName());
myComputer=a[a.length-1];
userIP=myComputer.getHostAddress();
userName=myComputer.getHostName();
}
catch(UnknownHostException E){}

解决方案 »

  1.   

    补充说明:
    1、这段代码实现的前提是你本身目前的确连上了互联网并且用有一个IP地址
    2、在小区宽带Lan和ADSL上测试通过,局域网没有测试过
      

  2.   

    我还没有十分成型的想法,不过为了实现楼主的意图,我们必须绕过代理服务器或者Windows的Internet连接共享机制,从而取得本机的外网IP。值得一提的是,对内网的所有机子,外网IP实际上是共享的。暂时有两个想法:1、在网关的机子上取外网IP;
    2、发送HTTP GET或者POST请求到外网的某个服务器,由它分析客户端的IP得到外网IP。
    // javax.servlet.ServletRequest类有个方法getRemoteAddr()返回客户IP地址。不知道哪位大哥熟悉这一块,说一说有没有更好的办法?
      

  3.   

    对于同处于同一个局域网里的两个机子自然可以通过获得的局域网IP访问。。像前面的sean_gao(大胃) 说的可以试图让本地程序主动联系某外网的具有公网固定IP的机子,然后找到我的机子的公网访问IP,再把地址回发回来给我的机子上的程序。。对于
    “1、在网关的机子上取外网IP;”
    这个我不清楚对于DNS,
    通过查找域名来解析出我的IP,这是个值得考虑的方法,
    据我所知,好象一个域名会绑定一个IP(应该是公网IP吧),然而对于局域网里的机子似乎行不通了,需要端口映射或者其他什么的技术辅助解决动态域名解析(如果还不是静态IP的话)的问题
    继续候教中。
      

  4.   

    按talent_marquis(甜菜侯爵) 的方法,,确实不错,只要域名已经绑定影射到了我机子(现在有不少动态域名解析公司在做这东东赚钱)。看来JAVA语言本身似乎是不能自己找出外网IP了。(需要借助于外网的程序来回送IP)。