欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java获取服务器IP及端口的方法实例分析

程序员文章站 2024-03-02 13:05:40
本文实例讲述了java获取服务器ip及端口的方法。分享给大家供大家参考,具体如下: 前几天写过一个获取远程服务器的ip和端口的程序,从网上查了一些资料顺便加一些自己的理解...

本文实例讲述了java获取服务器ip及端口的方法。分享给大家供大家参考,具体如下:

前几天写过一个获取远程服务器的ip和端口的程序,从网上查了一些资料顺便加一些自己的理解,希望对大家有所帮助:

struts2 获取request

httpservletrequest requet=servletactioncontext.getrequest();
requet.getscheme()+"://"+requet.getservername()+":"+requet.getserverport()

(例如)结果为:http://localhost:8080/

request.getheader("user-agent");  //就是取得客户端的系统版本
request.getremoteaddr();  //取得客户端的ip
request.getremotehost()   //取得客户端的主机名
request.getremoteport();  //取得客户端的端口
request.getremoteuser();  //取得客户端的用户
request.getlocaladdr();  //取得服务器ip
request.getlocalport();  //取得服务器端口

1、jsp中获得当前应用的相对路径和绝对路径

根目录所对应的绝对路径:request.getrequesturi()
文件的绝对路径 :application.getrealpath(request.getrequesturi());
当前web应用的绝对路径 :application.getrealpath("/");
取得请求文件的上层目录:new file(application.getrealpath(request.getrequesturi())).getparent()

2 servlet中获得当前应用的相对路径和绝对路径

根目录所对应的绝对路径:request.getservletpath();
文件的绝对路径 :request.getsession().getservletcontext().getrealpath(request.getrequesturi())
当前web应用的绝对路径 :servletconfig.getservletcontext().getrealpath("/");

servletcontext对象获得几种方式:

javax.servlet.http.httpsession.getservletcontext()
javax.servlet.jsp.pagecontext.getservletcontext()
javax.servlet.servletconfig.getservletcontext()

3.java类中获得绝对路径

根据java.io.file的doc文挡,可知: 默认情况下new file("/")代表的目录为:system.getproperty("user.dir")

扩展:

上面的获取ip方法,只能获取到127.0.0.1,无语

在window下使用

inetaddress.getlocalhost().gethostaddress()

这种方法在linux却只能取到127.0.0.1这个让人无奈的地址。。。这简直是让人不能忍受的啊。。。这种地址不用获取,我们谁不知道。。。

在网上搜索了很多,发现说这个问题的并不多,所以,我把找到的一段代码分享给大家。。。当然这段代码需要jdk1.5以上版本

java代码:

enumeration<networkinterface> netinterfaces = null;
try {
  netinterfaces = networkinterface.getnetworkinterfaces();
  while (netinterfaces.hasmoreelements()) {
    networkinterface ni = netinterfaces.nextelement();
    system.out.println("displayname:" + ni.getdisplayname());
    system.out.println("name:" + ni.getname());
    enumeration<inetaddress> ips = ni.getinetaddresses();
    while (ips.hasmoreelements()) {
      system.out.println("ip:"
      + ips.nextelement().gethostaddress());
    }
  }
} catch (exception e) {
  e.printstacktrace();
}
enumeration<networkinterface> netinterfaces = null;
try {
    netinterfaces = networkinterface.getnetworkinterfaces();
    while (netinterfaces.hasmoreelements()) {
        networkinterface ni = netinterfaces.nextelement();
        system.out.println("displayname:" + ni.getdisplayname());
        system.out.println("name:" + ni.getname());
        enumeration<inetaddress> ips = ni.getinetaddresses();
        while (ips.hasmoreelements()) {
            system.out.println("ip:"
            + ips.nextelement().gethostaddress());
        }
    }
} catch (exception e) {
    e.printstacktrace();
}

这段代码会输出计算机中所有设备的ip,找需要的用吧,呵呵

更多关于java相关内容感兴趣的读者可查看本站专题:《java socket编程技巧总结》、《java文件与目录操作技巧汇总》、《java数据结构与算法教程》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。