有什么方法在IP地址改变时用Java接收通知吗?
例如,当机器从dhcp服务器接收到新地址时。我想避免轮询,因为机器已经承受了很重的负荷。从我目前的发现来看,这似乎是不可能的。
在纯java中工作的东西最好,但是linux特定的方式也可以。
编辑:我应该提到IP地址是本地机器的地址,而不是远程服务器的地址。即。当正在运行java程序的机器的IP地址发生更改时,我希望收到通知。
发布于 2015-01-13 09:34:41
Linux的特定方式:编写一个shell脚本来监视syslog最近的更改。提取IP地址,如果从syslog(/var/log/syslog)中有任何更改,或者u可以有条不紊地使用run ifconfig并比较id,则IP地址中有任何漏洞。
发布于 2015-01-13 09:38:55
您可以使用此工具生成Java程序获取的触发器:
http://sourceforge.net/projects/ipmonitor/
发布于 2015-01-13 10:22:38
我认为你在没有投票的情况下不会这么做的。问题是,在一般情况下,机器可能有几个IP,这使事情变得复杂。
假设您对用于连接到某个已知位置(例如一些内部服务器或简单的"www.google.com")的IP感兴趣,那么打开该位置的套接字并调用socket.getLocalAddress()
是最简单的方法。这将始终返回正确的IP地址。这个解决方案是跨平台的,易于实现,但是如果你真的不需要这种连接的话,就有点尴尬了。
另一种方法是解析操作系统的路由表(在linux上运行route -en
)。这不需要外部连接,但需要(有时是复杂的)解析。
第三种更简洁的获取当前IP地址的方法是here。但是,当程序运行在一个具有多个公共ip的机器上,或者一个具有多个私有地址而没有公共地址的机器上时,就会出现问题。使用这种方法,在这种情况下,您最终会猜测IP,而且您可能并不总是正确的。但是,如果您知道要监视哪个地址,或者知道接口名称,这是目前为止最好的解决方案。
https://stackoverflow.com/questions/27918635
复制相似问题