问题标签 [inetaddress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
36849 浏览

java - Java:将 int 转换为 InetAddress

我有一个int包含网络字节顺序的 IP 地址,我想将其转换为InetAddress对象。我看到有一个InetAddress构造函数需要 a byte[],是否有必要将 a 转换intbyte[]第一个,还是有其他方法?

0 投票
5 回答
21016 浏览

java - 有没有一种简单的方法可以在 Java 中将 String 转换为 Inetaddress?

我正在尝试将字符串转换为Inetaddress. 我不是在尝试解析主机名:字符串是 ipv4 地址。InetAddress.getByName(String host)行得通吗?还是我必须手动解析它?

0 投票
1 回答
469 浏览

java - 获取 Yahoo IP 地址不起作用

我使用 java 中的 InetAddress 类获取 Yahoo IP 地址。yahoo.com IP 地址的结果在 Web 浏览器的 URL 中给出时不起作用。

结果显示为,地址 = www.yahoo.com/67.195.160.76 地址 = www.yahoo.com/69.147.125.65

当我将这些 ip 输入浏览器的 url(即http://67.195.160.76)时,浏览器显示“找不到所需的 URL”。

这有什么问题。java程序产生的结果是不是错了?

0 投票
3 回答
7431 浏览

java - 如何将 Java 类转换为其子类之一(SocketAddress 和 InetSocketAddress)

我正在尝试以字符串形式获取套接字连接的 IP。

我正在使用一个框架,它返回SocketAddress接收到的消息的。我怎样才能将其转换为InetSocketAddressor InetAddress

0 投票
2 回答
5928 浏览

java - 避免使用 InetAddress - 以网络字节顺序获取原始 IP 地址

我正在尝试在 Google App Engine 上使用 MaxMind GeoLite Country 数据库。但是,我很难让 Java API 工作,因为它依赖于 InetAddress 类,该类在 App Engine 上不可用。

但是,我不确定是否有一个简单的解决方法,因为它似乎只使用 InetAddress 类来确定给定主机名的 IP。就我而言,主机名始终是 IP。

我需要一种将表示为字符串的 IP 地址转换为网络字节顺序的字节数组(InetAddress 类的 addr.getAddress() 方法提供的)的方法。

这是当前 API 使用的代码,我需要找到一种方法来删除对 InetAddress 的所有引用,同时确保它仍然有效!

谢谢你的时间。

0 投票
2 回答
5900 浏览

java - Java 中的 isReachable 似乎并没有按照预期的方式工作

我正在使用 Clojure,但我可以阅读 Java,所以这不是 Clojure 特定的问题。这甚至似乎不适用于 Java。

我正在尝试使用 isReachable 实现一些“ping”功能。我正在使用的代码是这样的:

我的一个好朋友翻译成Java:

这两个都返回假。我想我一定是做错了,但谷歌研究告诉我不同​​。我很困惑!

0 投票
2 回答
6283 浏览

sql-server - 如何在 SQL Server 的单列中存储 IPv4 或 IPv6?

我应该使用binary(16)orvarbinary(16)吗?

我知道我可以使用 getAddress()in java.net.InetAddress(Java) 或System.Net.IPAddress(C#) 来获得 and 的表示byte[],但是如果我需要将ie插入到 in的字段中,我是否需要担心填充或任何事情?IPv4IPv6IPv4binary(4)binary(16)SQL Server

0 投票
3 回答
11010 浏览

java - 想要同时使用 Inet4Address 和 Inet6Address 的 Java 应用程序

我有一个 Java 应用程序需要通过套接字连接到两台不同机器上的两台不同服务器。一台服务器已配置为侦听 IPv4 连接,而另一台服务器已配置为侦听 IPv6 连接。

现在,假设“host1”是侦听 IPv4 连接的服务器的机器名,而“host2”是侦听 IPv6 连接的服务器的机器名。我需要Inet4Address为“host1”和Inet6Address“host2”创建一个到每个服务器的套接字连接,如下所示:

但是,出于向后兼容性的原因,JVM 默认更喜欢使用 IPv4 地址而不是 IPv6 地址。因此,在上面的代码中,第一次尝试连接到“host1”成功,但第二次尝试连接到“host2”失败,因为InetAddress.getByName("host2")返回的是一个Inet4Address而不是Inet6Address.

我知道我可以将系统属性设置java.net.preferIPv6Addresses为 true 以更喜欢 IPv6 地址而不是 IPv4,但这反过来会导致第二次尝试连接到“host2”成功,但第一次尝试连接到“host1”失败(!)因为InetAddress.getByName("host1")返回一个Inet6Address而不是Inet4Address

系统属性java.net.preferIPv6Addresses只被读取一次(参见 InetAddress 行 212-218),因此即使我在将其设置为 true 后将其值更改回 false,它也不会产生任何影响。

那么在这种情况下我能做些什么呢?这似乎是一个普遍的问题,所以肯定已经有一种方法可以做到这一点。

请注意,我当然可以InetAddress.getByAddress()显式使用和提供每台机器的 IP 地址来取回Inet4Addressand Inet6Address,但我不想这样做,除非我真的必须这样做。所以请其他解决方案。

哦,我正在使用 java 1.6.0_19 以防万一。

谢谢!

0 投票
1 回答
678 浏览

java - 发生了一件有趣的事情...... ExecutorCompletionService

我有一个用 java 编写的应用程序,它需要找到网络上所有可访问的主机。

我用InetAddress.isReachable()2000 毫秒的超时来执行此操作。

我查找当前本地机器的 IP 地址,并据此尝试访问以 1-255 结尾的其他 IP 地址,而丢失了本地机器的 IP 地址。

这一切都工作正常单线程,只是需要很长时间,因为大多数 IP 地址不存在,因为它们不存在,所以用完 2 秒超时。

为了加快速度(并在行动中尝试并发性 :: Brian Goetz),我尝试使用FutureCallable

这一切也很顺利。

但是我想用ExecutorCompletionService它来给我的用户一个响应速度更快的应用程序,这样他们就可以看到结果,因为他们可以使用

在具有以下配置的单处理器机器上运行此程序会导致四个可访问主机中的一个被识别:

在四核机器上将其更改为这样也使其无法检测到所有可访问的主机:

通过将InetAddress.isReachable()超时更改为 10 秒,使最后一个配置正常工作。

此外,通过在四核机器上按如下方式更改配置,也使其在 2 秒超时下工作:

我是否遗漏了一些非常明显的东西,为什么会发生这种情况?

是什么阻止InetAddress.isReachable(2000)了检测我网络上所有可访问的主机?

为什么尝试运行多个InetAddress.isReachable()调用会失败?

0 投票
1 回答
235 浏览

postgresql - PostgreSQL:比较 IPv4 地址的前 3 个数字?

我正在尝试编写一个 PHP 脚本,用户可以在其中评价其他用户的“优点”:

为了(尝试)防止篡改,我想在过去一小时内删除来自同一 IP 的相同 ID 的条目

(由于代理/路由器偶尔的误报是可以的 - 因为失去评级是可以的,因为作者可以在以后的任何时间重新提交它;但是让一些白痴在不同的 id 下注册并破坏我的整个数据库是不行的当我离开网站时):

请问我有2个问题:

1)如果我只想比较IP地址的前3个数字而不是4个,我该怎么做? (是的,我知道 IPv4 网络的 A、B、C 类型,在这里没关系......)

2)我需要为我的表添加索引还是已经为 id 和 author 编制了索引?

谢谢!亚历克斯