2016-05-23 997 views
1

von node.js kommend Ich kann dies tun node.js zu sagen, die Anforderung mit ipv6 vs ipv4Wie für HttpWebRequest oder WebRequest C# IPV6 oder IPV4 zwingen

var http = require("http"); 
var options = { 
    hostname: "google.com", 
    family: 4, // set to 6 for ipv6 
}; 
var req = http.request(options, function(res) { 
    .. handle result here .. 
}); 
req.write(""); 
req.end(); 

Einstellung family-4 Kräfte ipv4, machen Setzen Sie es auf 6 Kräfte ipv6. Wenn ich es nicht einstelle, kann es funktionieren.

Wie kann ich die gleiche Sache in C# tun (.NET 3.5)

kann ich von einer Art und Weise denkt, die ein DNS mich selbst für die A-oder AAAA-Einträge zu machen ist, bitten, einen direkten IP-Antrag stellen und Stellen Sie die host: Kopfzeile ein. Gibt es einen besseren Weg?

Antwort

3

Sie können ServicePoint.BindIPEndPointDelegate verwenden.

var req = HttpWebRequest.Create(url) as HttpWebRequest; 

req.ServicePoint.BindIPEndPointDelegate = (servicePount, remoteEndPoint, retryCount) => 
{ 
    if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) 
    { 
     return new IPEndPoint(IPAddress.IPv6Any, 0); 
    } 

    throw new InvalidOperationException("no IPv6 address"); 
};