关于如何获取项目所部署的本机IP和端口的问题
2019-10-31 16:04:46来源:博客园 阅读 ()
关于如何获取项目所部署的本机IP和端口的问题
关于如何获取项目所部署的本机IP和端口的问题
今天在写一个需求的时候碰到一个不常见的问题,在没有继承或者实现服务器提供的接口或者实现类的时候,比如说部署在tomacat上,某个类不去继承servelt接口或者继承Httpservelet抽象类的时候去或者项目所处的IP地址以及
项目所部署的端口号。
我们先说一下我们都知道的情况,继承或者实现上面两者的情况下如何获取
方法一:
req.getLocalAddr(); 获取本机的IP地址(客户端)
req.getLocalPort(); 获取项目部署的端口号(客户端)
那么在没有继承上面两者的情况下,通过何种方式获取呢?
方法二:
先上代码再解释:
获取本机的IP地址的代码
1 public static InetAddress getCurrentIp() { 2 try { 3 // 得到当前机器上在局域网内所有的网络接口 4 Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); 5 // 遍历所有的网络接口 6 while (networkInterfaces.hasMoreElements()) { 7 NetworkInterface ni = (NetworkInterface) networkInterfaces.nextElement(); 8 // 获取当前接口下绑定到该网卡的所有的 IP地址。 9 Enumeration<InetAddress> nias = ni.getInetAddresses(); 10 while (nias.hasMoreElements()) { 11 InetAddress ia = (InetAddress) nias.nextElement(); 12 // 获取网卡接口地址(ip) 13 String hostAddress = ia.getHostAddress(); 14 System.out.println(hostAddress); 15 // 只需要ipv4地址 排除ipv6地址和127.0.0.1 取ipv4地址 16 if (!ia.isLinkLocalAddress() && !ia.isLoopbackAddress() && ia instanceof Inet4Address) { 17 return ia; 18 } 19 } 20 } 21 } catch (SocketException e) { 22 } 23 return null; 24 }
获取服务器的端口号
1 public static String getLocalPort() throws MalformedObjectNameException { 2 // 获取所有注册在jvm中的服务器 3 MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); 4 Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), 5 Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))); 6 System.out.println(objectNames); 7 String port = objectNames.iterator().next().getKeyProperty("port"); 8 return port; 9 }
上面用到的包,都是java.net.*下的包,是jdk 中自带的包,已经提供在环境中,不需要额外的引入其他的包, Java 在 JDK1.4 之后引入了网络操作的相关包,所以需要JDK1.4或者1.4以上才行。
由于我用的Tomact服务器开发的,暂时没有测其他的服务器是否也同样可以,如果以后用到其他服务器再补充。
原文链接:https://www.cnblogs.com/zyfBlogShare/p/11772513.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:String
- Flink 如何分流数据 2020-06-11
- 老板让你抗住千万级流量,如何做架构设计? 2020-06-11
- 如何干掉 if else 策略+工厂 2020-06-11
- 类的继承,方法重新中修饰符如何定义 2020-06-10
- 如何写出高质量Spring 组件? 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash