Vier Fragen

  • 1. Wie finde ich die IP zu einem Socket bei TCP heraus?
    Die SockettoIP funktion im Tutorial gibt immer 0 zurück...

    2. Wie findet mein TCP Server heraus, wann eine Verbindung getrennt wurde, und welcher Socket sich getrennt hat?

    3. Kann ich Daten durch den Socket eines anderen Programms schicken?
    z.B. bin ich mit einem IRC Client connected, und möchte per Hotkey etwas absenden, ohne das die eigentliche Eingabe benutzt wird...

    4. Wie kann ich aus einer Variable (z.B. /kick [SOCKET]) das erste und zweite usw Wort einzeln in eigene Variablen tun?^^

    Das wars erstmal^^

    Einmal editiert, zuletzt von Nimos (25. November 2008 um 19:30)

    • Offizieller Beitrag

    BugFix hat mal eine Basic-IRC-Client-UDF geschrieben (hieß bisschen anders). Die unterstützt solche Sachen, allerdings vermutlich nicht parallel zu einem laufenden IRC-Programm. Fremde Tunnel kann man nicht kapern (hoffentlich), sonst würde jeder Virus über Browsertunnel kommunizieren, oder!?

    peethebee

  • 1. Wie finde ich die IP zu einem Socket bei TCP heraus?
    Die SockettoIP funktion im Tutorial gibt immer 0 zurück...

    2. Wie findet mein TCP Server heraus, wann eine Verbindung getrennt wurde, und welcher Socket sich getrennt hat?

    3. Kann ich Daten durch den Socket eines anderen Programms schicken?
    z.B. bin ich mit einem IRC Client connected, und möchte per Hotkey etwas absenden, ohne das die eigentliche Eingabe benutzt wird...

    4. Wie kann ich aus einer Variable (z.B. /kick [SOCKET]) das erste und zweite usw Wort einzeln in eigene Variablen tun?^^

    Das wars erstmal^^

    1. steht in der Sufu:

    Spoiler anzeigen
    [autoit]

    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------
    ; from helpfile 3.2.12.1
    ; modified by Prog@ndy
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", 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 ;==>SocketToIP

    [/autoit]


    2. TCPRecv($socket, 1024) und dann abfragen ob @error gesetzt ist
    3. Glaub ich weniger
    4. StringSplit ?

    Einmal editiert, zuletzt von Carsten8 (24. November 2008 um 18:02)

  • Di e Socket to IP stimmt nicht. Hab sie mal korrigiert:

    Spoiler anzeigen
    [autoit]

    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------
    ; from helpfile 3.2.12.1
    ; modified by Prog@ndy
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", 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 ;==>SocketToIP

    [/autoit]
  • ok danke schonmal, jetzt noch etwas:

    Ein Array benutzt man ja mit $array[nummer]

    kann man auch aus der 0 1 2 3 4 nummerierung rausgehen, und strings oder unzusammenhängende zahlen verwenden?

    • Offizieller Beitrag

    kann man auch aus der 0 1 2 3 4 nummerierung rausgehen, und strings oder unzusammenhängende zahlen verwenden?


    Nein, du greifst per Index auf das Array zu, d.h. du gibst die "Hausnummer" an, unter der im Array das Element lagert.
    Alternativ kannst du mit Dictionary-Objekt arbeiten. Dann ist assoziativer Zugriff möglich.

  • objDictionary hab ich gefunden, und in include ordner getan, ich kanns aber nicht includen....muss man das irgendwie anders machen?

    EDIT: Achso, die datei hiesst "dictonary" X(