检测动态 IP 地址更改

Detect dynamic IP address change

我已经检查了关于这个主题的其他问题,其中大部分建议 运行 检查 IP 地址更改的任务。我是 运行 Jetty 网络服务器中的一项服务。我的问题是,HTTP Web 服务器是否会为它们的工作捕获此类更改?或者它只需要一个 "port" 来绑定。如果 Web 服务器已经进行了该跟踪,那么我可能会尝试将其用作我的应用程序中的触发器。我找不到任何这样说的消息来源。我只是想知道是否已经存在类似的东西。

当 Jetty 启动时,它会创建 1 个(或更多)Jetty ServerConnector 个对象。

这些 ServerConnector 对象使用 Java(和 OS)网络设施(对于 TCP/IP)"bind" 到特定的 host:port 列出传入连接。

如果主机 IP 关闭,则它无法再接受传入连接。

如果主机 IP 发生变化,那实际上是现有主机关闭,并且正在创建一个新主机(在新 IP 上)。

对于像 Jetty 这样的服务器,要响应这种情况,就需要能够连接到 OS 的网络服务并收到此类更改的通知。然后在新 IP 上创建一个新的 ServerConnector 以接受新的传入连接。

Note: existing connections would likely be terminated by the OS.

不幸的是,标准 Java 没有这样的网络配置事件可以挂钩。

但是存在专用 API。

示例:Android 有连接管理器。 Android: Internet connectivity change listener