- Offizieller Beitrag
Hi,
weil hier vor kurzen eine Diskussion zu dem Thema war habe ich mal im Eng. Forum geguckt und dies gefunden :
Spoiler anzeigen
Func _TCPIpToName($sIp,$hDll_Ws2_32 = "Ws2_32.dll")
Local $vbinIP,$vaDllCall,$vptrHostent,$vzptrName
Local $INADDR_NONE = 0xffffffff
$vaDllCall = DllCall($hDll_Ws2_32,"long","inet_addr","str",$sIp)
If @error Then Return SetError(1,0,"") ; inet_addr DllCall Failed
$vbinIP = $vaDllCall[0]
If $vbinIP = $INADDR_NONE Then Return SetError(2,0,"") ; inet_addr Failed
$vaDllCall = DllCall($hDll_Ws2_32,"ptr","gethostbyaddr","long_ptr",$vbinIP,"int",4,"int",2) ; 2 = AF_INET
If @error Then Return SetError(3,0,"") ; gethostbyaddr DllCall Failed
$vptrHostent = $vaDllCall[0]
If $vptrHostent = 0 Then
$vaDllCall = DllCall($hDll_Ws2_32,"int","WSAGetLastError")
If @error Then Return SetError(5,0,"") ; gethostbyaddr Failed, WSAGetLastError Failed
Return SetError (4,$vaDllCall[0],"") ; gethostbyaddr Failed, WSAGetLastError = @Extended
EndIf
$vzptrName = DllStructCreate("ptr",$vptrHostent)
Return __TCPIpToName_szStringRead(DllStructGetData($vzptrName,1))
EndFunc
; Internal
Func __TCPIpToName_szStringRead($iszPtr, $iLen = -1)
Local $aStrLen, $vszString
If $iszPtr < 1 Then Return ""
If $iLen < 0 Then
$aStrLen = DllCall("msvcrt.dll", "int", "strlen", "ptr", $iszPtr)
If @error Then Return SetError(1, 0, "")
$iLen = $aStrLen[0] + 1
EndIf
$vszString = DllStructCreate("char[" & $iLen & "]", $iszPtr)
If @error Then Return SetError(2, 0, "")
Return SetError(0, $iLen, DllStructGetData($vszString, 1))
EndFunc
#include <inet.au3>
ConsoleWrite("Public hostname:" & _TCPIpToName(_GetIP()) & @LF)
ConsoleWrite("Local hostname:" & _TCPIpToName("127.0.0.1") & @LF)
ConsoleWrite("@IPAddress1 hostname:" & _TCPIpToName(@IPAddress1) & @LF)
;~ Public hostname:85-124-175-2.dynamic.xdsl-line.inode.at
;~ Local hostname:localhost
;~ @IPAddress1 hostname:Kunibert
So long,
Mega