InetAddress.getByName 失败 getaddrinfo 工作
InetAddress.getByName fails getaddrinfo works
我在DNS查找IPv6地址时遇到了问题,我似乎找不到关于它的好信息。
我正在尝试使用InetAddress.getByName("ipv6.local.com")
查找 IPv6 地址。 它会引发UnknownHostException
错误。
奇怪的部分是我知道可以联系DNS服务器,因为这有效:
InetAddress.getByName("ipv4.local.com")
我也知道 IPv6 记录正在工作,因为我可以运行:
nslookup ipv6.local.com
并且它正确地返回3ffe:b00:0:1:4678:3eff:fe36:16e8
.
同样,如果我在C++中运行以下内容,我也得到上述地址的结果:
int errorCode = getaddrinfo("ipv6.local.com", "4242", &hints, &res);
我也试过Inet6Address.getByName()
,但这也抛出了UnknownHostException
. 那么为什么getaddrinfo()
和nslookup
工作而不是InetAddress.getByName()
呢?
我正在尝试从与DNS服务器在同一网络上运行Android 6.0.1的Android设备(Galaxy Tab S2 8")进行DNS查找。 DNS 服务器有一个指向192.168.0.190
的记录"ipv4.local.com"
,以及一个指向3ffe:b00:0:1:4678:3eff:fe36:16e8
的记录"ipv6.local.com"
。
DNS 服务器在 Android 设备上的 Wi-Fi 设置中显式设置,并在192.168.0.182
上运行。
有什么想法吗?
我不确定为什么IPv6分辨率不适合您。这是我测试的Java代码(java版本"1.8.0_171")的示例:
package com.myjava.ip;
import java.net.InetAddress;
import java.net.UnknownHostException;
class MyIpByHost {
public static void main(String a[]){
try {
InetAddress host = InetAddress.getByName("ipv6.google.com");
System.out.println(host.getHostAddress());
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
}
}
输出: java com/myjava/ip/MyIpByHost => 2404:6800:4003:c02:0:0:0:8a
此代码返回终结点"ipv6.google.com"的 IPv6。
Java在其后端运行C函数以完成工作。如你所知,C 的 getaddrinfo() 函数支持 IPv6,但 gethostbyname() 不支持。 您可能正在运行带有底层 C 函数的过时版本的 Javagethostbyname()不支持 IPv6。我 建议你升级使用getaddrinfo()的Java。
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- InetAddress.getByName 失败 getaddrinfo 工作