IPv6 mit .NET
Vielen Dank für Ihren brillanten Artikel „Indifferente Socken“ zur Socket-Programmierung in c’t 19/10 (S. 160). Ich würde nun auch gerne in meinen .NET-Programmen nur noch TCP-Verbindungen nutzen, die automatisch korrekt zwischen IPv4 und IPv6 auswählen. Die Funktion getaddrinfo, die Sie im Artikel erwähnen, scheint nicht zu .NET zu gehören. Muss ich sie umständlich extern aufrufen?
- Johannes Endres
Vielen Dank für Ihren brillanten Artikel „Indifferente Socken“ zur Socket-Programmierung in c’t 19/10 (S. 160). Ich würde nun auch gerne in meinen .NET-Programmen nur noch TCP-Verbindungen nutzen, die automatisch korrekt zwischen IPv4 und IPv6 auswählen. Die Funktion getaddrinfo, die Sie im Artikel erwähnen, scheint nicht zu .NET zu gehören. Muss ich sie umständlich extern aufrufen?
Nein, das müssen Sie nicht. Der .NET-Klasse System.Net.Sockets.TCPClient können Sie im Konstruktor Hostnamen und Port übergeben. Dann verhält sie sich automatisch so, wie im Artikel beschrieben.
Wenn Sie die Liste der Adressen zu einem Namen brauchen, benutzen Sie die Methode GetHostEntry() des Objekts System.Net.DNS. Auch diese Funktion leidet jedoch unter dem im Artikel beschriebenen Bug in der zugrunde liegenden Funktion getaddrinfo() unter Windows: Sie liefert nur die Adressen zurück, die Windows für erreichbar hält.
()