Re: IP auslesen
From: Hans-Peter Grözinger (hanspetergr_at_gmx.de)
Date: 11/25/04
- Next message: Marcus Plust: "Re: auf eigene Events zum Event Handler hinzufügen"
- Previous message: Hans-Peter Grözinger: "Re: auf eigene Events zum Event Handler hinzufügen"
- In reply to: Simon Grimm: "Re: IP auslesen"
- Next in thread: Atair: "Re: IP auslesen"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 25 Nov 2004 13:00:34 +0100
Hallo Simon !
> > Ich hab mir daraus z.B. ne Funktion gebastelt, die ein Array
> > mit allen IPs als String zurückgibt - das kann man dann schön
> > nach lokalen bzw. externen IPs filtern.
>
> Kannst du mir die Funktion vll mal zuschicken ?
> oder hier posten?
Auf die hat Alexander doch schon verwiesen. :-)
Hier also nochmals (in meiner Ausführung)
FUNCTION GetIP
**************
DECLARE RtlMoveMemory IN kernel32 AS CopyMemory STRING @DEST, INTEGER Src, INTEGER nLength
DECLARE INTEGER gethostbyname IN ws2_32 STRING cHost
DECLARE STRING inet_ntoa IN ws2_32 INTEGER in_addr
DECLARE INTEGER WSACleanup IN ws2_32
DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING lpWSAData
#DEFINE HOSTENT_SIZE 16
LOCAL lnStruct, lnSize, lcBuffer, lnAdress, lcIP
*-- WinSock initialisieren
IF WSAStartup( 0x202, REPLICATE( CHR( 0 ), 512 ) ) <> 0
*-- Fehler, dann brechen wir ab
RETURN( .F. )
ENDIF
*-- Host-Struktur holen
lcHost = GETWORDNUM( SYS( 0 ), 1 )
lnStruct = gethostbyname( lcHost )
*-- Es konnte keine Namensauflösung durchgeführt werden
IF lnStruct = 0
*-- Leerstring als Fehlerindikator zurückgeben
WAIT WINDOW 'Namensausflösung nicht möglich'
ELSE
*-- Parameter mit 0x0 füllen
lcBuffer = REPLICATE( CHR( 0 ), HOSTENT_SIZE )
lcIP = REPLICATE( CHR( 0 ), 4 )
*-- IP-Adresse aus der Struktur lnStruct holen
CopyMemory( @lcBuffer, lnStruct, HOSTENT_SIZE)
CopyMemory( @lcIP, buf2dword( SUBSTR( lcBuffer, 13, 4 ) ), 4 )
CopyMemory( @lcIP, buf2dword( lcIP ), 4 )
lcIPString = inet_ntoa( buf2dword( lcIP ) )
WAIT WINDOW lcIPString
ENDIF
*-- WinSock wieder freigeben
WSACleanup()
RETURN
FUNCTION buf2dword( tcBuffer )
******************************
RETURN ASC( SUBSTR( tcBuffer, 1, 1 ) ) + BITLSHIFT( ASC( SUBSTR( tcBuffer, 2, 1 ) ), 8 ) + ;
BITLSHIFT( ASC( SUBSTR( tcBuffer, 3, 1 ) ), 16 ) + BITLSHIFT( ASC( SUBSTR( tcBuffer, 4, 1 ) ), 24 )
Diese Funktion benötigt aber auf jeden Fall die WS2_32.DLL (für
welche das wins***.ocx einen Wrapper bildet).
-- Hans-Peter Grözinger TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
- Next message: Marcus Plust: "Re: auf eigene Events zum Event Handler hinzufügen"
- Previous message: Hans-Peter Grözinger: "Re: auf eigene Events zum Event Handler hinzufügen"
- In reply to: Simon Grimm: "Re: IP auslesen"
- Next in thread: Atair: "Re: IP auslesen"
- Messages sorted by: [ date ] [ thread ]