• Offizieller Beitrag

    Hi,

    weil hier vor kurzen eine Diskussion zu dem Thema war habe ich mal im Eng. Forum geguckt und dies gefunden :

    Link

    Spoiler anzeigen
    [autoit]


    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

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit]

    So long,

    Mega