1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 本机ip_java如何获取本机IP地址

java 本机ip_java如何获取本机IP地址

时间:2021-09-15 18:52:56

相关推荐

java 本机ip_java如何获取本机IP地址

本文实例为大家分享了java实现获取本机IP地址的具体代码,供大家参考,具体内容如下

原因:同一台机子上开着两个web工程,现在有需求需要保证两个项目之间交互的安全问题。因为有个旧的项目,所以尽量不做改动。只能在新项目中做改动。

处理办法:获取本地的IP地址,有请求进来时查看请求的来源,只有来源是本地IP的才予以通过。

代码如下:

/**

* 任务调度调用拦截器

*/

public class TaskControlInterceptor implements Interceptor {

//存放本机IP地址列表(包括ipv4和ipv6)

private static Set localHostList = new HashSet<>();

@Override

public void intercept(Invocation inv) {

Controller controller = inv.getController();

HttpServletRequest request = controller.getRequest();

/*

获取本机的IP地址列表

请求的时候判断来源IP地址是否在该列表中,如果不在的话则不予通过

*/

if (localHostList.size() == 0) {

localHostList = getIpAddress();

}

if (StringUtils.isNotBlank(request.getRemoteAddr())) {

if (!localHostList.contains(request.getRemoteAddr())) {

Result result = new Result(new Error("450","非法的请求,请求来源IP地址不是本机"));

controller.getResponse().setStatus(450);

controller.renderJson(result);

return;

}

} else {

Result result = new Result(new Error("450","非法的请求,请求来源IP地址为空"));

controller.getResponse().setStatus(450);

controller.renderJson(result);

return;

}

inv.invoke();

}

/**

* 获取本机的IP地址(包括ipv4和ipv6)

*

包含回环地址127.0.0.1和0:0:0:0:0:0:0:1

*/

private static Set getIpAddress() {

Set ipList = new HashSet<>();

try {

Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();

InetAddress ip = null;

while (allNetInterfaces.hasMoreElements()) {

NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();

//排除虚拟接口和没有启动运行的接口

if (netInterface.isVirtual() || !netInterface.isUp()) {

continue;

} else {

Enumeration addresses = netInterface.getInetAddresses();

while (addresses.hasMoreElements()) {

ip = addresses.nextElement();

if (ip != null && (ip instanceof Inet4Address || ip instanceof Inet6Address)) {

ipList.add(ip.getHostAddress());

}

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return ipList;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。