java 获取当前登录的ip
例如:项目中有些时候需要做IP访问限制,部分地区的用户不可以访问或者只能看到部分内容
方案
InetAddress inet = InetAddress.getLocalHost();
System.out.println("本机的ip=" + inet.getHostAddress()); 。
提示:此时我们获取到ip时会发现一直输出的是 127.0.0.1
经调查整理出的新的方案
/**
* Get host IP address
*
* @return IP Address
*/
private InetAddress getAddress() {
try {
for (Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); interfaces.hasMoreElements();) {
NetworkInterface networkInterface = interfaces.nextElement();
if (networkInterface.isLoopback() || networkInterface.isVirtual() || !networkInterface.isUp()) {
continue;
}
Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
if (addresses.hasMoreElements()) {
return addresses.nextElement();
}
}
} catch (SocketException e) {
logger.debug("Error when getting host ip address: <{}>.", e.getMessage());
}
return null;
}
进行测试
public static void main(String[] args) throws Exception {
InetAddress address = getAddress();
String localIp = address.getHostAddress();
System.out.println(localIp);
}
测试结果
控制台输出我的ip地址
例如:192.168.1.1