2016-10-29 8 views
2

Warnung CS0618:' IPAddress.Address 'ist veraltet:' Diese Eigenschaft ist wurde veraltet. Es ist Adresse Familie abhängig. Verwenden Sie die Methode IPAddress.Equals, um Vergleiche durchzuführen.Warnung CS0618: 'IPAddress.Address' ist veraltet: 'Diese Eigenschaft wurde veraltet

Konvertiert die oktale Darstellung einer IP-Adresse in eine Ganzzahl ohne Vorzeichen (in Lang).

public static long CastIp(string ip) 
{ 
    return (long)(uint)IPAddress.NetworkToHostOrder((int)IPAddress.Parse(ip).Address); 
} 

Es gibt mir diese Warnung; Was würde ich tun, um dasselbe ohne IPAddress im obigen Code zu erreichen?

+0

Wofür verwenden Sie das "lang"? Warum konvertieren Sie die Nummer in die Host-Reihenfolge? Warum ignorierst du IPv6? – Luaan

Antwort

3

Die documentation für IPAddress.Address sagt:

Diese Eigenschaft ist veraltet. Verwenden Sie GetAddressBytes. So

Ich schlage vor, Sie das tun:

public static long CastIp(string ip) 
{ 
    IPAddress address = IPAddress.Parse(ip); 
    byte[] addressBytes = address.GetAddressBytes(); 
    // This restriction is implicit in your existing code, but 
    // it would currently just lose data... 
    if (addressBytes.Length != 4) 
    { 
     throw new ArgumentException("Must be an IPv4 address"); 
    } 
    int networkOrder = BitConverter.ToInt32(addressBytes, 0); 
    return (uint) IPAddress.NetworkToHostOrder(networkOrder); 
} 

, dass das gleiche Ergebnis in den Tests zu geben scheint, ich habe versucht ... Sie sollten prüfen, ob es tut genau das, was Sie wollen, obwohl, weil es nicht klar ist, was genau du erwartest.

+0

Danke, das hat super funktioniert :) – MLBdev

Verwandte Themen