在没有DNS查找的情况下将String转换为InetAddress

Bar*_*chs 19 java ip-address

我有一个点分十进制表示法的本地IP地址String.我想将其转换为将其转换InetAddressSocket,但我需要在不进行DNS查找的情况下执行此操作(因为这可能会导致冗长的超时).

有没有一个现成的方法,或者我需要拆分StringInetAddress从其字节创建?

更新的工厂方法InetAddress.getByName()InetAddress.getByAddress()不似乎是一个不错的选择,因为它们都还接受主机名称,例如java.sun.com.毫无疑问,他们是否会尝试在实施中联系DNS服务器.

Pra*_*ran 24

这样做

InetAddress inetAddress = InetAddress.getByName("192.168.0.105");
Run Code Online (Sandbox Code Playgroud)

如果提供了文字IP地址,则仅检查地址格式的有效性.

java源代码

// if host is an IP address, we won't do further lookup    
if (Character.digit(host.charAt(0), 16) != -1 || (host.charAt(0) == ':')) {

}
Run Code Online (Sandbox Code Playgroud)

  • 源代码说的相同:'如果主机是IP地址,我们将不会进一步查找' (5认同)

Mat*_*all 6

您可以使用专门针对您的用例记录的GuavaInetAddresses#forString()

返回InetAddress具有给定字符串表示的 。
这特意避免了所有名称服务查找(例如,没有 DNS)。

(强调)