Hallo,
Ich habe gestern festgestellt, das man die IPv6 Loopback Addresse nicht in die entsprechende IPv4 Loopback Adresse umwandeln kann bzw. das Ergebnis entspricht nicht dem was ich erwarten würde.
Die Loopback Addresseen sind ::1 für IPv6 und 127.0.0.1 für IPv4.
Wenn ich nun ::1 zu IPv4 mappe bekomme ich 0.0.0.1 als Ergebnis zurück, erwarten würde ich hier aber 127.0.0.1. Für Andere IPv6 Addressen scheint dies zu jedoch richtig zu Funktionieren.
Umgekehrt verhält sich die Methode MapToIPv6 bei IPv4 Addressen auch etwas seltsam.
So wird bei 127.0.0.1 folgendes einfach davor ::ffff: gehängt, das scheint generell bei jeder IPv4 Addresse der Fall zu sein.
Test App:
class Program
{
static void Main(string[] args)
{
var ipAddresses = Dns.GetHostAddresses("localhost");
//var ipAddresses = Dns.GetHostAddresses(Dns.GetHostName());
var ipAddress = ipAddresses[0];
Console.WriteLine($"Loopback IPv6: {ipAddress.MapToIPv6()}");
Console.WriteLine($"Loopback IPv4: {ipAddress.MapToIPv4()}");
ipAddress = ipAddresses[ipAddresses.Length -1];
Console.WriteLine($"Loopback IPv6: {ipAddress.MapToIPv6()}");
Console.WriteLine($"Loopback IPv4: {ipAddress.MapToIPv4()}");
Console.ReadKey();
}
}
Ausgabe für localhost:
Loopback IPv6: ::1
Loopback IPv4: 0.0.0.1
Loopback IPv6: ::ffff:127.0.0.1
Loopback IPv4: 127.0.0.1
Ausgabe für Hostname
Loopback IPv6: fe80::e83a:b1d0:426d:8f8d%21
Loopback IPv4: 66.109.143.141
Loopback IPv6: ::ffff:192.168.178.20
Loopback IPv4: 192.168.178.20
Ist das verhalten korrekt oder sollte ich das als Bug melden? Ich bin mir nicht sicher. Was meint ihr?
Die Programmierung von MapToIp wandelt nur die Bytes der entsprechenden IP von v4/6 oder umgekehrt.
Was die Programmierung nicht macht, ist eben spezielle Adressen wie die Loopback Adressen zu berücksichtigen.
Dafür müsstest du die vermutlich was eigenes bauen.
Nachtrag:
Als Anlauf kannst du dafür aus IpAddress dann Loopback und IPv6Loopback verwenden.
Nur falls du es dringend brauchst 😃
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.