JAVA应用获取本机IP
在应用开发的时候如何获取本机的IP呢?
本人在开发一个线上系统的时候有这样的需求,办法很简单啊,google一下,于是乎有了下面的代码:
方案一:
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
if (interfaces != null) {
while (interfaces.hasMoreElements()) {
try {
NetworkInterface network = interfaces.nextElement();
if ("eth0".equals(network.getName())) { // 验证只有eth0才会获取ip
Enumeration<InetAddress> addresses = network.getInetAddresses();
if (addresses != null) {
while (addresses.hasMoreElements()) {
try {
InetAddress address = addresses.nextElement();
if (isValidAddress(address)) {
return address;
}
} catch (Throwable e) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn("[getLocalAddress0] Failed to retriving ip address, " + e.getMessage(), e);
}
}
}
}
}
} catch (Throwable e) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn("[getLocalAddress0] Failed to retriving ip address, " + e.getMessage(), e);
}
}
}
}
这段代码中为什么加入判断eth0呢?因为一般线上服务器可能不止有一个网卡,我们线上内网都是用的eth0,所以就可以写死。但是这样毕竟不好。那怎么解决呢?
方案二:
已知线上某台服务器ip,并可以连上。通过socket链接,获取本机对内网ip
private static InetAddress getLocalHostBySocket(InetSocketAddress remoteAddress) {
InetAddress host = null;
try {
// 连远程地址
Socket socket = new Socket();
try {
socket.connect(remoteAddress, 1000);
// 得到本地地址
host = socket.getLocalAddress();
} finally {
try {
socket.close();
} catch (Throwable e) {
}
}
} catch (Exception e) {
logger.warn("Can not connect to host {}, cause by :{}",
remoteAddress.toString(), e.getMessage());
}
return host;}
JAVA应用获取本机IP的更多相关文章
- java如何获取本机IP
java如何获取本机IP import java.net.*; public class Test6 { public static void main(String[] args) { // TOD ...
- Java 实例 - 获取本机ip地址及主机名
package guyu.day0824; import java.net.InetAddress; /** * @Author: Fred * @Date: 2020/8/24 09:39 */ p ...
- java获取本机IP地址
转载自:http://blog.csdn.net/thunder09/article/details/5360251 在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一 ...
- java获取本机ip(排除虚拟机等一些ip)最终解,总算找到方法了
本文参考https://blog.csdn.net/u011809209/article/details/77236602 本文参考https://blog.csdn.net/yinshuomail/ ...
- 详谈再论JAVA获取本机IP地址
首先,你如果搜索“JAVA获取本机IP地址”,基本上搜到的资料全是无用的.比如这篇:http://www.cnblogs.com/zrui-xyu/p/5039551.html实际上的代码在复杂环境下 ...
- Java获取本机IP
try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); whil ...
- 180709-Java实现获取本机Ip的工具类
180709-Java实现获取本机Ip的工具类 获取本机Ip算是比较常见的一个需求场景了,比如业务报警,可能就会带上出问题的机器IP,方便直接上去看日志定位问题,那么问题来了,如何获取机器IP呢? I ...
- 获取本机IP和主机名
如果是在windows环境: 使用InetAddress.getLocalHost()方法即可 package com.datongsoft.wg.common.util; import java.n ...
- 获取本机IP地址
这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...
随机推荐
- MAC Pro 2017款 无线上网慢
MAC Pro 2017款 在无线路由器和MAC相隔一个房间,上网很慢,怀疑是无线路由器有问题,但其他几台老款MAC和PC上网正常.后来将蓝牙关掉,上网就很快了.
- python IDE的配置
本人使用过的两款,系统环境ubuntukylin 15.04 jupyter 主要参考:ref1 和 ref2 遇到问题: error: [I 21:48:41.947 NotebookApp] Wr ...
- WordPress函数query_posts用法汇总
最近经常有网友跟我咨询WordPress函数query_posts的相关用法,说起来query_posts实在是太强大,参数无数,用法更是无数,如果让我说它的用法,我根本没法一一说清楚.开始之前,你可 ...
- AC日记——背单词 洛谷 P2353
背单词 思路: KMP+统计前缀和优化: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1000005 ], ...
- 实时显示从file输入框中打开的图片C:\fakepath路径问题
html代码: <input id="file_upload" type="file" /> <div class="image_c ...
- LOJ #6280. 数列分块入门 4-分块(区间加法、区间求和)
#6280. 数列分块入门 4 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 题目描述 给出一个 ...
- CodeForces 779A Pupils Redistribution
简单题. 因为需要连边的人的个数一样,又要保证和一样,所以必须每个数字的个数都是一样的. #include<map> #include<set> #include<cti ...
- 提高sqlmap爆破效率
提高sqlmap爆破效率 sqlmap在注入成功后,会尝试获取数据库和表的结构.对于MSSQL.MySQL.SQLite之类数据库,sqlmap可以通过系统数据库.系统数据表获取数据库和表的结构.但 ...
- python 字符串,数学之间的不可描述的关系
首先说一下输入: >>> a=raw_input(" ") 1.234 >>> a '1.234' >>> 可以看到使用raw ...
- 【BZOJ 1901】【ZJU 2112】Dynamic Rankings
http://www.lydsy.com/JudgeOnline/problem.php?id=1901 重新用整体二分写了一下. 整体二分的思想详见论文. 貌似带修区间k大和静态区间k大都是\(O( ...