Vervollkommnung der SQL-Binärdatei zur IP-Adress-String-Konvertierung

8

Wir verwenden ein binäres Feld (16), um IP-Adressen zu speichern. Wir tun dies, da es sowohl IPv4- als auch IPv6-Adressen enthalten kann und einfach mit der .NET IPAddress-Klasse verwendet werden kann.

Ich habe jedoch die folgende SQL-Funktion erstellt, um die binäre Adresse für Reporting-Zwecke in die IP-Adress-Zeichenfolge zu konvertieren.

%Vor%

Im Moment, wenn das 5 Byte 0 ist, nehme ich an, dass es eine IPv4-Adresse ist. Ist das eine sichere Annahme? Ist es besser, alle verbleibenden Bytes auf Nullen zu überprüfen oder gibt es einen besseren Weg?

BEARBEITEN Entfernen unnötiger Cast

    
Magpie 08.09.2010, 08:46
quelle

1 Antwort

5

Ich würde sagen, Sie sollten auch die Adressfamilie speichern, entweder in Ihrem Byte-Array oder als separate Spalte. Wenn Sie 16 Byte an den IPAddress-Konstruktor übergeben, wird er als IPv6-Adresse erstellt. Daher müssen Sie den Code überprüfen, um die Adressfamilie zu bestimmen. Es scheint viel einfacher zu sein (und sich nicht auf Annahmen über die Bytes einer IPv6-Adresse zu verlassen), um diese Informationen direkt zu speichern.

Oder verwenden Sie eine varbinary (16), die Sie dann prüfen können, die Länge von (Länge = 4 = & gt; IPv4-Adresse)

    
Damien_The_Unbeliever 08.09.2010, 08:57
quelle

Tags und Links