_SocketToIP

  • Hallo Community,

    ich melde mich nach einer kurzen AutoItauszeit wieder zurück und habe da nun ein Problem:

    Ich benutze _SocketToIP aus dem TCPRecv-Beispiel

    Aber wenn ich versuche die Funktion aufzurufen erhalte ich folgende Fehlermeldung:

    "long_ptr", "int_ptr" and "short_ptr" DllCall() types have been deprecated. Use "long*", "int*" and "short*" instead.

    Wisst ihr was mir das sagen soll oder sogar eine Lösung des Problems?

    Hiernoch mal den Code der Funktion

    Spoiler anzeigen
    [autoit]

    Func SocketToIP($SHOCKET)
    Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]")

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

    Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _
    "ptr",DLLStructGetPtr($sockaddr),"int_ptr",DLLStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DLLCall("Ws2_32.dll","str","inet_ntoa","int",DLLStructGetData($sockaddr,3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc

    [/autoit]


    MfG Aiden =)

    Einmal editiert, zuletzt von Aiden (23. Januar 2008 um 15:48)

  • Du benutzt die neue Autoit-Version. Dort sind die Typ-Namen beim DLL-Call von
    "long_ptr", "int_ptr" and "short_ptr"
    nach
    "long*", "int*" and "short*" geändert worden
    Das musst du oin der Funktion auch ändern:

    [autoit]

    Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _
    "ptr",DLLStructGetPtr($sockaddr),"int*",DLLStructGetSize($sockaddr))

    [/autoit]