C# 无法将UDP DNS请求发送到IPv6 DNS?

C# 无法将UDP DNS请求发送到IPv6 DNS?,c#,.net,sockets,dns,udp,C#,.net,Sockets,Dns,Udp,对于一个项目,我正在编写一个简单的类似dig的工具,用于发送DNS请求和处理响应。我正在使用C#UdpClient发送数据包。现在,我可以发送到任何IPv4服务器,但当我尝试指定IPv6 DNS(2001:4860:4860:0:0:0:8888或2001:4860:4860:0:0:0:8844)时,会出现错误 我的代码是: try { var ip = "[dns ip]"; var DNSServer = IPAddress.Parse(ip); var endpo

对于一个项目,我正在编写一个简单的类似dig的工具,用于发送DNS请求和处理响应。我正在使用C#UdpClient发送数据包。现在,我可以发送到任何IPv4服务器,但当我尝试指定IPv6 DNS(2001:4860:4860:0:0:0:8888或2001:4860:4860:0:0:0:8844)时,会出现错误

我的代码是:

try {
    var ip = "[dns ip]";
    var DNSServer = IPAddress.Parse(ip);
    var endpoint = new IPEndPoint(DNSServer, 53);

    byte[] packet = new byte[UDP_LENGTH];
    var index = createRequest(type, hostname, packet);

    client.Send(packet, index, endpoint);

    var result = client.Receive(ref endpoint);
    ParseResponse(result);

} 
catch(Exception e){
    Console.WriteLine(e.ToString());
    Environment.Exit(0);
}
如果
ip==8.8.8.8
或任何其他IPv4地址,它将按预期运行。如果
ip==2001:4860:4860::8844
或我得到的任何其他IPv6:

System.Net.Sockets.SocketException (10051): A socket operation was attempted to an unreachable network
    at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
    at System.Net.Sockets.Socket.SendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP)
    at System.Net.Sockets.UdpClient.Send(Byte[] dgram, Int32 bytes, IPEndPoint endPoint)
    at Program.queryDNS(IPAddress DNSServer, DnsType type, String hostname) in C:\...\Program.cs:line 66
试图对无法访问的网络执行套接字操作

您可能没有IPv6连接到您尝试访问的网络。这可能是因为您的本地网络中没有IPv6,没有IPv6网关,路由器上没有公共IPv6地址。在同一台机器上调用dig等其他工具时,应该显示相同的行为,即它与您的代码无关