Gewaltiger Packetverlust

  • Heyho Leute.

    Ich hab ein großes Problem mit Autoit und zwar tritt ein enormer Packetverlust auf, wenn ich die TCP Send Funktion nutze.
    Wenn ich den Client folgenden Code absenden lasse :

    [autoit]

    TCPStartup()

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

    $socket = TCPConnect ($ip, $port)
    If $socket = -1 Then
    Else
    TCPSend ($Socket,"PACKET")
    endif
    TCPCloseSocket($socket)

    [/autoit]

    dann empfängt der Server das Packet nur beim ungefähr siebten Mal, wenn sich der Server auf einem Root Server befindet.
    Andere Server Client Applicationen funktionieren auf dem Rootserver einwandfrei.

    Hier mal der Code vom Server:

    [autoit]

    $MainSocket = TCPListen ($ip, $port, $maxcon)

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

    If $MainSocket = -1 Then
    MsgBox (16, "Error", "Es ist ein Fehler aufgetreten.")
    EndIf

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

    While 1
    $ConnectedSocket = TCPAccept ($MainSocket)
    If $ConnectedSocket >= 0 Then
    $Recv = TCPRecv ($ConnectedSocket, $maxbyte)
    MsgBox(0,"Test",$Recv)
    Endif
    wend

    [/autoit]

    Einmal editiert, zuletzt von Kuroihana (29. April 2011 um 08:48)

  • Hallo Kuroihana^^,
    die Tcprecv funktion überprüft sozusagen nur eine Warteschlange von Packeten. Dort werden empfangene Packete eingegliedert.
    Wenn das Packet also erst in die Warteschlange kommt nachdem du Tcprecv ausgeführt hast wurde es "sozusagen" nicht empfangen.

    So sollte es deutlich besser funktionieren: Pastebin
    Dort wird die "Warteschlange" nun solange überprüft bis sich ein neues Packet darin befindet.

  • Benutz doch bitte mal die Autoit Quellcode Funktion des Forums sumsum, ging mir gestern schon auf die nerven :P

    Einfach auf dieses Icon beim Posting erstellen klicken -->

    Dummer weise hat das Forum die tolle Funktion bei Google Chrome jeden mehrzeiligen Autoit Code in eine Zeile zu packen :D
    Und ich wollte nicht immer den IE starten.