Integer der IP Adresse

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

MichaelG

Betreff: Integer der IP Adresse

BeitragSo, Sep 12, 2004 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

bin neu hier im Board und will erst mal los werden, dass ich es klasse finde, wie hier geholfen wird.
Konnte schon einige Probleme beheben, indem ich die Suche benutzt habe.
Bin eigentlich ziemlicher Blitz Basic Newbie und stehe vor einem für mich größeren Problem (für die meisten hier wohl ein eher kleines ...).
Meine Frage lautet:
Wie kann ich den Integer meiner IP Adresse ermitteln?
Vlt. hat jmd. nen kleines Programmchen oder kann mir den Code geben, wäre super ...

Grüße
Michael

Suco-X

Betreff: ......

BeitragSo, Sep 12, 2004 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf www.blitzbase.de steht bei den Netzwerk Beispielen (Zumindestens UDP)
eine Funktion bei, die eine String IP in ein Integer umwandelt.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Jolinah

BeitragSo, Sep 12, 2004 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich sie grad zur Hand hatte:

Code: [AUSKLAPPEN]

Function INT_IP(IP$)
   a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
   a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
   a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
   a4=Int(IP$)
   
   Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4
End Function


Damit du vielleicht auch begreifst wie es funktioniert:

Die einzelnen Werte der IP (mit punkt getrennt) werden zuerst als separate Integer eingelesen. Ein Integer benutzt 4 Bytes speicher.
1 Byte = 8 Bit = sowas wie 00000000
Also wäre demnach ein Integer 4 mal so gross:
00000000 00000000 00000000 00000000

Als nächster schritt wird ein neuer Integer generiert. Die einzelnen Teile der IP Adresse können maximum 1 Byte gross sein (0 - 255). Wie du siehst gibt es auch 4 solche Teile. Passt also genau in einen Integer.

Beispiel IP Adresse "255.255.255.255"

Da man die einzelnen Werte in Integer ausgelesen hat werden sie auch als solcher im Speicher gehalten:

1. Wert (255) 00000000 00000000 00000000 11111111
2. Wert (255) 00000000 00000000 00000000 11111111
3. Wert (255) 00000000 00000000 00000000 11111111
4. Wert (255) 00000000 00000000 00000000 11111111

Mit der BB Funktion Shl, kann man die einzelnen Bits eine Stelle nach links schieben. Die grösse des Speichers bleibt aber gleich, deshalb verschwindet dann das ganz linke Bit ganz aus dem Speicher, alle anderen werden 1 nach links geschoben und rechts kommt eine neue 0 Dazu.

Aus 255 Shl 1 wird dann also das:
000000 000000 000001 11111110

Da wir nun die ganzen vier eigenen Werte in einen Integer packen wollen müssen wir die einzelnen Werte an die richtige Stelle schieben Wink

Der erste Wert Shl 24 schiebt also das ganze 24 Stellen nach links. Wodurch das entsteht:
11111111 00000000 00000000 00000000

Der zweite Wert Shl 16 gibt:
00000000 11111111 00000000 00000000

Der dritte Wert Shl 8 gibt:
00000000 00000000 11111111 00000000

Der letzte Wert lassen wir wie er ist:
00000000 00000000 00000000 11111111

Alle 4 einzelnen Werte zusammen Addiert oder mit dem Or Operator verbunden gibt dann letzen Endes:
11111111 11111111 11111111 11111111

So, nun haben wir das ganze in einem Integer, fertig Wink
Das ganze als Dezimal Zahl ergibt: 4294967295
 

MichaelG

BeitragMi, Sep 15, 2004 1:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, habe es kapiert, alles klar.
Danke für die Hilfe, ihr Beiden (ganz besonderen Dank an Jolinah für die ausführliche Erklärung). Smile
 

Kruemelator

BeitragFr, Feb 06, 2009 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis ist ein schon länger her, hatte aber das selbe Problem und eine Lösung gefunden die nicht so unübersichtlich wie der Code von Jolinah ist.
Vielleicht hilft das ja jemandem.

Code: [AUSKLAPPEN]
wert = HostIP(CountHostIPs("127.0.0.1"))
 

tecgod

BeitragSa, März 28, 2009 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich find die idee mit HostIP besser,
weil ich auch grade eben das selbe Problem habe

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group