TCP/IP

  • Hallo Com.
    Ich würde gerne eine Art Packet filter in Autoit basteln (für einen "Flyff" Pserver), also habe ich mir mal die Ports angeguckt und habe von einem zweiten
    PC mich dahin verbunden ( per Hamachi).
    Dann kommt eine Meldung "Disconnected from the Server" also vom Spiel selber,
    wenn ich aber einen anderen Port nehme, sagt er das er da nicht hin verbinden kann.
    Soweit so gut, nur zeichnet mein Script nicht dir Packete auf...D:
    Mein Script sieht so aus :


    TCPStartup ()

    $MainSocket = TCPListen("5.94.104.170","23000","10000")

    While 1
    $NewSocket = TCPAccept($MainSocket)

    If $NewSocket >= 0 Then
    Do
    $Recv = TCPRecv($NewSocket,"2048")
    Until $Recv <> ""
    _FileWriteLog (@scriptDir&"/Log.log",$Recv)

    EndIf
    WEnd


    Ich hoffe ihr könnt mir sagen wie ich das Lösen kann...

    lg

  • meist oder oft kommt beim ersten $Recv = TCPRecv($NewSocket,"2048") garnichts an. Du solltest also nicht prüfen ob nichts mehr gekommen ist, sondern eher, so oft daten abrufen bis @error gesetzt wurde. genau dann wurde die verbindung nämlich gekappt.

  • Das Problem ist:
    Weil dauernd überprüft wird, ob etwas empfangen wurde und irgendwann nichts empfangen wurde, dann wird die Verbindung getrennt ($NewSocket wird überschrieben) und auf eine neue Verbindung gewartet.
    (Wie tkausl schon sagte)

    Versuch mal das:

    Spoiler anzeigen
    [autoit]


    TCPStartup ()

    $MainSocket = TCPListen("5.94.104.170","23000","10000")
    $NewSocket = -1

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

    Do
    $NewSocket = TCPAccept($MainSocket)
    Until $NewSocket <> -1

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

    While 1
    $Recv = TCPRecv($NewSocket,"2048")
    If @error Then ExitLoop

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

    If $Recv <> "" Then
    _FileWriteLog (@scriptDir&"/Log.log",$Recv)
    EndIf
    WEnd

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

    TCPShutdown()

    [/autoit]

    o
    L_/
    | ||

    This ist janaiky. Copy janaiky into your signature to help him on the war to the Weltherrschaft.

    Einmal editiert, zuletzt von janaiky (14. April 2010 um 17:32)

  • Danke, allllsssoooo ^^
    Das ist komischerweise bei allen meiner TCP/IP Scripts, es existiert ein Error, der aber nichts macht ( also keine Auswirkungen aufs Programm)
    Ich hatte mir gerade nochmal die Hilfe angeschaut, und habe den Fehler gefunden =P
    Undzwar muss ich eintragen:
    $Recv = TCPRecv($NewSocket,"2048",1)

    Also die eins am ende =P
    ok Danke für die Hilfe ..=D