本文实例为大家分享了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;

}

}

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

java 获取本机地址_java如何获取本机IP地址相关推荐

  1. java web 获取 mac 地址_java web根据访问的ip地址获取MAC地址

    /** * 取客户端MAC地址 * @author huangwg 2014-06-26 */ public static String getMACAddress(HttpServletReques ...

  2. 计算机如何输入ip地址,电脑如何切换ip地址_怎么让电脑切换ip地址-win7之家

    在每台电脑中,系统中的ip协议都会有提供一种统一的ip地址,能够为为互联网上的每一个网络和每一台主机分配一个逻辑地址,从而达到屏蔽物理地址的差异,同时我们也可以对ip地址进行切换,那么电脑如何切换ip ...

  3. 计算机网络如何计算有效ip地址个数,如何计算到底有多少个IP地址及IP地址的种类及取值范围...

    关于IP地址的个数的计算方法,很多地方的知识都是一知半解,并不能给予人们一个正确全面的解答.本人也是经过多方探究与总结,方能明白其中的道理.下面,就为大家介绍如何计算IP地址到底有多少个,并且,所划分 ...

  4. 最快网络服务器ip地址,本地ISP真实DNS服务器IP地址;加快电脑速度三法

    屏蔽网络共享功能 要是我们的计算机并没有处于单位局域网网络中,那么已经被启用的网络共 享功能其实一点用处都没有,它的存在反而会拖累系统的启动速度;要想尽可能 地提高系统启动速度的话,我们完全可以将本地 ...

  5. 设置为自动获得IP地址,如何查看当前的IP地址

    电脑设置为自动获得IP地址,如何查看当前的IP地址呢?首先点击[开始]在搜索框中输入"cmd",即可打开命令提示符,如下图所示: 输入"ipconfig /all&quo ...

  6. 钱包一般链接那个节点_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)...

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 投资区块链,猛戳:火星财经App下载 文章来源:巴比特 匿名币的技术之争是非常有 ...

  7. dz email地址无效_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)

    匿名币的技术之争是非常有意思的,比如KMD核心开发者Duke Leto刚发表了一篇博客文章,披露了关于Zcash及其多数分叉币存在的漏洞,而这个漏洞可能会泄露使用屏蔽地址(zaddr)的全节点 IP地 ...

  8. 屏蔽武汉ip地址 php,wordpress如何限制屏蔽IP地址

    垃圾评论一直是很多人包括我都很头疼的问题,虽然一直在使用强大的Akismet插件,但要想完全的防止垃圾评论的骚扰似乎并不是想象中的那么容易. 从今天开始,我们将针对垃圾评论的问题进行一系列的探讨,希望 ...

  9. dlink网络打印服务器如何修改ip地址,DLINK路由器如何更改登陆IP地址

    摘 要 如果你使用的是DLINK路由器,那么默认的登陆地址一定是http:// dlinkrouter或http://dlinkrouter.local或http://192.168.0.1. 如果你 ...

  10. ping服务器地址加时间显示,如何对IP地址进行Ping测试

    Ping命令能测试您和另一个网络节点之间的连接速度.您能使用该命令了解连接的强度.距离和可用性,不管是在您自己的网络中还是互联网.参照以下指南了解如何在各种系统中使用Ping命令. 方法1在Windo ...

最新文章

  1. V8 JavaScript引擎研究(三)垃圾回收器的实现
  2. RxJava使用(一)基本使用
  3. android6.0单独编译和调试framework源码的方法
  4. TensorFlow | TensorFlow实践(一)
  5. 关于解决Win32控制台程序编译后自动退出
  6. ElasticSearch学习资料
  7. double处理arithmeticexception为什么不报错_板式换热器为什么冷热不均匀?应怎样检查并简单处理?...
  8. MATLAB实现多元线性回归预测
  9. Laravel源码解析之事件系统
  10. UBuntu CMake工程配置基础
  11. bandzip关闭右键新建文件夹选项方法步骤
  12. lfw分类 python_Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)...
  13. zone在linux中的含义,linux-日常运维-firewalld的9个zone
  14. UBUNTU-16.04.07和PREEMPT_RT日志
  15. 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)
  16. diy无感无刷电机霍尔安装_永磁无刷直流电机霍尔位置传感器的安装
  17. 系统集成项目管理工程师学习
  18. VBA之正则表达式(14)-- 提取指定位数的数字
  19. Web前端优化最佳实践
  20. C#中的位操作:BitVector32结构

热门文章

  1. hysys动态模拟教程_(转载)HYSYS-过程模拟软件-稳态模拟-第一部分(一)
  2. 防火墙双机热备(应用场景分析及配置)
  3. 工业自动化要学python_工业的自动化控制除了PLC等常规的以外,是否需要学习相关编程语言,如运动控制,数据采集,机器学习等需要学习什么编程语言...
  4. LoRa网关与服务器通信——MQTT
  5. 单片机74LS164C语言例子,51单片机控制74LS164芯片输出64位的数组
  6. 普中28335开发攻略_凌乱的DSP笔记(1)-F28335基础知识
  7. 五金模具设计统赢外挂提升效率技巧、外挂模具设计流程、常见问题归纳
  8. 【力扣面试】面试题 04.02. 最小高度树(就是创建二叉平衡树)
  9. 9.20残差网络 ResNet
  10. 无法定位程序输入点K32Get Module File Name Ex于动态链接库KERNEL32.dll上 的错误解析