Puffern von zu sendenden Daten über die WinSock2 API

Schnoogle

Mitglied
Hallo,

ich muss aktuell einen Transport Layer für ein Protokoll implementieren. Dabei kann von dieses Transport Layer wahlweise UDP oder TCP verwendet werden. Hierfür verwende ich die WinSock2 API.

Dabei soll es möglich sein mehrere Nachrichten von diesem Protokoll in einem TCP bzw. UDP Frame zu versenden, damit eine höhere Datenrate erzielt werden kann.

Meine Vorgehensweise wäre jetzt das man über die API meines Transportlayer die zu sendenden Daten puffern kann, bevor bei TCP die send() bzw. bei UDP die sentTo() Funktionen aufgerufen werden.

Kann ich das so machen, oder gibt es hier bessere bzw. üblichere Vorgehensweisen? Ist es evtl. möglich über die WonSock2 API zu puffern, so dass ich das nicht selbst implementieren muss?

Viele Grüße
 
Hi

einen (steuerbaren, garantiert vorhandenen, verlässlichen) Puffer hat man nicht eingebaut.
Selbermachen also. Und ja, das kann man schon so machen.
 
Ausserdem liegt die Kontrolle i.d.R. nicht bei dir wie viele Daten in einem TCP bzw UDP Paket über den Draht geschickt werden. Das OS kann hier z.B. ein send-Aufruf in mehrere Paket aufteilen, wenn es denn Lust hat. Bei UDP weisst du wenigstens, dass nach spätestens knapp 65kb auf jeden Fall ein neues Paket versandt wird. Bei UDP kämpfst du aber natürlich in der Regel mit anderen Problem wie Integrität der Daten sowie der Tatsache, dass du keine Ahnung hast, ob deine Daten ankommen oder irgendwo verloren gehen. Ich habe dazu auch mal ein paar Messungen gemacht. Die Verlustrate ist je nach Ziel bzw gewählter Route nicht zu vernachlässigen und kann in den unteren zweistelligen %-Bereich gehen.
 
Zurück