socket paket
-
hi,
wenn man 2 mal zwischen 100 u 200 zeichen sendet und der receiver socket wartet bei jedem receive auf 1024 zeichen...
wann empfaengt er 1 paket und wann 2 pakete? mit zeitverzoegerung bekomme ich schoene 2 pakete...an was liegt das?cu
-
Nagle Algorythmus
-
aso, wie kann man das abschalten?
-
TCP == Byte Stream, nix Paket.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ja gut, aber wie kann ich nagle abschalten? was passiert wenn ich 4627 zeichen auf einmal schicke und empfangen will?
-
setsockopt mit TCP_NODELAY. Bringen wird dir das aber nichts.
-
Du musst dir die "Packete" selbst zusammenpflücken. Wie viel Bytes du aufeinmal verschickst / empfängst entscheidet das TCP Protokoll je nach Netzwerklast und Band.
Am Besten du definierst für jedes Datenpacket einen header wo eine PacketID und die größe des Packetes in Bytes angegeben wird. Mit Klassen + Vererbung funktioniert sowas ganz gut.
Dort gibst du dann an, wie groß das aktuelle Packet ist (in deinem Fall 4627Bytes) und die Schleife empfängt solange die Bytes, bis alles empfangen wurde.Danach kannst du z.B. mit einer switch anweisung das Packet verarbeiten lassen, woraufhin die Schleife wieder das Nächste Packet zusammenpflückt, usw...
Ich hoffe das war einigermaßen verständlich.

-
Der Nagle Algorithmus soll verhinden, dass zu viele kleine Packete gesendet
werden. "kleine Packete" bedeutet alles, was < der MSS ist. Bei > 4000bytes,
kannst du getrost das Packet einfach verschicken, ich bezweifle, dass der
Nagle Algorithmus hier greift.Auf meinem System liegt die MSS bei 512Bytes.
gruss
v R