gpt4 book ai didi

java - 如何在 Java 中区分 LAN 上的在线 IP 地址与本地 IP/其他机器 IP

转载 作者:行者123 更新时间:2023-11-29 06:04:16 29 4
gpt4 key购买 nike

在 Java 中是否有任何可能的方法来区分在线 IP 地址与 LAN 上的本地/其他机器 IP 地址?

我正在开发一个应用程序,需要识别用户输入的本地 IP/LAN IP 和在线 IP 地址。

提前致谢。

最佳答案

据我所知,没有办法仅基于 IP 来做到这一点(这不是特定于 Java,而是基于网络的工作方式)。

但是,如果您有更多信息,您也许可以这样做。有 3 个 IP 地址网络未在 Internet 上使用。它们是:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

如果您知道 LAN IP 地址将来自特定范围(包括运行您的应用程序的主机所在的网络),您可以区分;但是 - children 不要在家里尝试这个,因为它会让你头疼 - 如果你在局域网中使用的 IP 地址也在互联网上使用,你不仅会遇到地址冲突,而且还会难以区分在线和局域网IP。


还有别的东西;如果您的用户尝试通过互联网“连接”,但位于 NAT 之后,您的应用程序将只能将其流量源视为为您的用户执行 NAT 的网关的公共(public) IP。因此,例如,如果您的两个用户位于 LAN 中的某个位置,IP 为 10.0.1.0/24,但他们的网关的公共(public) IP 为 123.123.123.123,您的应用程序将看到这两个用户的 IP 为 123.123.123.123

如果您打算以类似于 VPN 的方式使用它,您可能必须想出一种不同的身份验证方式,或者您必须知道 NAT 后面的所有用户的所有网关的所有公共(public) IP。


如 Marcelo 所指出的,关于术语的注释:afaik,“在线”和“离线”不是通常用于 IP 的术语。我们宁愿谈论“公共(public)”(在互联网上看到的)和“私有(private)”IP(互联网上任何人都看不到的您自己网络中的 IP)。

关于java - 如何在 Java 中区分 LAN 上的在线 IP 地址与本地 IP/其他机器 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079970/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com