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

 更新时间:2018年12月13日 11:43:35   作者:huxiangen  
这篇文章主要介绍了Java获取服务器IP及端口的方法,结合实例形式分析了java针对客户端及服务器端各种常见的信息操作技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 详解SpringBoot中Controller接收对象列表实现

    详解SpringBoot中Controller接收对象列表实现

    这篇文章主要介绍了详解SpringBoot中Controller接收对象列表实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Mybatis Web中的数据库操作方法举例详解

    Mybatis Web中的数据库操作方法举例详解

    Mybatis是一款优秀的持久化框架,用于简化JDBC的开发,下面这篇文章主要给大家介绍了关于Mybatis Web中数据库操作方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • Netty核心功能之数据容器ByteBuf详解

    Netty核心功能之数据容器ByteBuf详解

    这篇文章主要为大家介绍了Netty核心功能之数据容器ByteBuf详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Spring Bean的实例化之属性注入源码剖析过程

    Spring Bean的实例化之属性注入源码剖析过程

    本篇文章主要就是分析Spring源码剖析-Bean的实例化-属性注入的相关知识,通过本文学习AbstractAutowireCapableBeanFactory#populateBean 方法的主要功能就是属性填充,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • Java servlet通过事件驱动进行高性能长轮询详解

    Java servlet通过事件驱动进行高性能长轮询详解

    这篇文章主要介绍了基于servlet3.0+事件驱动实现高性能长轮询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2022-06-06
  • springboot单独在指定地方输出sql的方法

    springboot单独在指定地方输出sql的方法

    一般线上项目都是将日志进行关闭,因为mybatis日志打印,时间长了,会占用大量的内存,如果我想在我指定的地方进行打印sql情况,本文就给大家介绍了springboot单独在指定地方输出sql的方法,需要的朋友可以参考下
    2023-10-10
  • spring-cloud Sleuth的使用方法

    spring-cloud Sleuth的使用方法

    这篇文章主要介绍了spring-cloud Sleuth的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • 剑指Offer之Java算法习题精讲二叉树与斐波那契函数

    剑指Offer之Java算法习题精讲二叉树与斐波那契函数

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Java中BIO、NIO、AIO的理解

    Java中BIO、NIO、AIO的理解

    这篇文章主要为大家详细介绍了Java中BIO、NIO、AIO的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java OSS批量下载并压缩为ZIP代码实例

    Java OSS批量下载并压缩为ZIP代码实例

    这篇文章主要介绍了Java OSS批量下载并压缩为ZIP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论