TCPRecv zu langsam?

  • Morgen,

    ich hab mal wieder ein Problem, aber diesmal mal TCPRecv. Ich empfange 3519160 Bytes in 1 Minute. Aber laut Wireshark sind die schon innerhalb von 0,3 Sekunden übertragen.
    Ist TCPRecv so langsam, das er nicht nach kommt oder wie? Hab mal noch den Teil vom Code wo die Bytes empfangen werden.
    Die Größe der Nutzdaten pro Paket betragen übriegens 1460 Byte.

    Spoiler anzeigen
    [autoit]

    Do
    $bRecv = TCPRecv($iSocket, 2048, 1)
    Until $bRecv <> ""

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

    Do
    $bRecv &= TCPRecv($iSocket, 2048, 1)
    Until @error

    [/autoit]

    Einmal editiert, zuletzt von m-obi (7. März 2012 um 13:46)

  • Was passiert, wenn du die Daten nicht jedes Mal an die Variable anhängst sondern einfach überschreibst?

  • Weiß jetzt worans lag. Unzwar hat TCPRecv zwischendurch und am Ende immer einen Leerstring zurückgegeben und es hat sehr lange gedauert bis er auf @error ging.
    Habs nun so gelöst wenn 200ms lang nur immer "" empfangen wird soll er aus der Schleife rausgehen. Damit läufts prima.

    Hier noch der Code dazu.

    Spoiler anzeigen
    [autoit]

    While 1
    $bRecv = TCPRecv($iSocket, 1460, 1)
    If $bRecv <> "" Then
    While 1
    $bStream = TCPRecv($iSocket, 1460, 1)
    If $bStream <> "" Then $bRecv &= $bStream
    If $bStream = "" And Not $xTimerRun Then
    $hTimer = TimerInit()
    $xTimerRun = True
    EndIf
    If $bStream <> "" Then $xTimerRun = False
    If $xTimerRun And TimerDiff($hTimer) > 200 Then ExitLoop 2
    WEnd
    EndIf
    WEnd

    [/autoit]