2015-10-03 24 views
6

próbuję przekonwertować adres IP do uint:System.Net.IPAddress.Address' jest przestarzała

IPAddress requstedIpAddress; 
uint requesteIpAddressUint = (uint)IPAddress.Parse(requstedIpAddress.ToString()).Address; 

I got to ostrzeżenie:

'System.Net.IPAddress.Address' jest przestarzałe: "Ta właściwość została uznana za przestarzałą . Adres jest zależny od rodziny. Użyj metody IPAddress.Equals do wykonywania porównań.

Co to znaczy i czy powinienem użyć tego w inny sposób?

+0

czym są wszystkie zaimportowane biblioteki? –

+2

Adres IPv6 nie pasuje do 'uint'. – PetSerAl

+0

Możliwy duplikat [Jak analizować ciąg adresu IP do wartości uint w C#?] (Http://stackoverflow.com/questions/36831/how-do-you-parse-an-ip-address-tring- to-a-uint-value-in-c) –

Odpowiedz

5

Ostrzeżenie o wycofaniu informuje, że w następnej aktualizacji biblioteki, która ma zdefiniowaną wartość IPAddress, nie będzie już mieć właściwości IPAddress.Address. Tak więc twój kod nie skompiluje się po następnej aktualizacji biblioteki.

Jeśli przejdziesz do dokumentacji dla IPAddress.Address, zauważysz, że właściwość jest przestarzała i powinna zamiast tego używać IPAddress.GetAddressBytes.

Wycofanie IPAddress.Address wynika z przyjmowania IPv6, który jest 128 bitów, a C# Typ long, który w rzeczywistości jest System.Int64 jest tylko 64 bitów.

+0

Więc lepiej jest użyć adresu IPAddress.GetAddressBytes, a jeśli mam adres IPv ^? –

+0

Mam na myśli IPv6 .... –

+0

'IPAddress.GetAddressBytes' zwraca' bajty [] 'tak, że może obsługiwać adresy IP v4 i v6 oraz ewentualnie kolejne iteracje, chociaż nie jest to prawdopodobne od jakiegoś czasu. –

Powiązane problemy