Allegmeine Frage zu TCP-Recv

  • Hey Leute!

    Google schon benutzt...;)

    Meine Frage:

    Bei TCP-Recv muss man ja die MaximalZeichen mit einem Wert angeben...

    Kann ich da eine Unendlich große Zahl nehmen??
    Wenn ich eine Zahl nehme wie: Beispiel:

    [autoit]


    TCPRecv($mainsocket, 1024)

    [/autoit]

    Was ist, wenn ich bei TCP-Send 2000 Zeichen auf einmal versende?? Muss ich mir gedanken um Datenverlust machen oder kommt es zu anderen Fehlern..?

    Danke für eure antworten..;) :rock: :rock:

    Einmal editiert, zuletzt von Mr_gitarre (30. Mai 2010 um 22:05)

  • macht aber kein Sinn wenn ich bei Recv ne maximallänge von 1024 angebe??
    Hat er son Puffer, dass er es dann trotzdem versendet oder wie kann man das verstehen..?

  • also auch wenn ich 10 bei RecV angebe und 2000 zeichen auf einmal versende kommen sie alle an, er guckt sich dann nur eben 10 an, danach die 10 weiteren, und dann die 10 weiteren??

    ...


    Alles klar;)

    danke :) :rock: :rock:

  • 8| Wusst ich auch nicht...
    Na ja, man lernt eben immer was dazu ;)

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Die meist verwendete max. Größe liegt bei 1500 (inkl. Header) Bytes, den Wert solltest du mindestens einstellen.
    Ich würde mal vermuten größere Pakete werden von TCPRecv ganz verworfen?

  • Also...
    TcpRecv funktioniert wie folgt: Es holt aus den Buffer einer Verbindung (erster Parameter) die nächsten X Zeichen (zweiter Parameter)...
    D.h. wenn dir 100 Zeichen gesendet werden und du machst ein Recv mit 1024 bekommst du alle aufeinmal, machst dus mit 1 musst du 100 mal das recv aufrufen, damit du alles aus dem buffer gelesen hast (dauert natürlich länger, wird manchmal genutzt um z.b. bei http zwischen header und body zu unterscheiden)...

    Auch bei großen Datentransfer sollte dir nix verloren gehen (solange das packet nicht größer ist als dein arbeitsspeicher vesteht sich...), deshalb nenn man tcp auch tcp weil es das Transport Control Protocol ist, bei dem kein Packet verloren geht...

    Ich benutzte als Recv eigentlich immer 1024 oder 2024... das reicht voll und ganz...

  • Da kann man meckern wie man will, aber man muss sagen, er kennt sich wirklich aus ^^
    Schön, das du gekommen bist :party:

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"