Daten bei der Verwendung von Sockets verwerfen.

Tikonteroga

Erfahrenes Mitglied
Hallo,

ich schreibe gerade eine Anwendung, bei der ich über Sockets (WinSock2.h) Daten empfangen muss.

Code:
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

Es kann Fälle geben in denen mir bekannt ist, dass die nächsten n Bytes, die ich über recv() empfangen werde, aber noch nicht empfangen habe, ungültig sind.

Gibt es eine Möglichkeit, dass ich diese Daten verwerfen kann, ohne dass ich diese in einen Puffer schreiben also quasi empfangen muss?

Grüße

Tikonteroga
 
Also die Daten die zu verwerfen sind, können im WorstCase bis zu 65KiloByte umfassen. Ich hatte mir erhofft, dass ich es mir ersparen kann einen 65k Puffer zu reservieren, die Daten aus dem SOCK_STREAM zu lesen und sie dann in diesen Puffer zu schreiben und denn Puffer dann wieder freizugeben.

Vielleicht hätte es ja auch eine Möglichkeit gegeben, dies so zu lösen, dass in der Implementierung des Sockets z. B. nur ein paar Variablen wie etwa ein Index verändert werden müssen.
 
Hallo

Das ist TCP, du weisst also, woher die Daten kommen. Willst du diese denn wirklich senden?
Und du brauchst keinen 65k Puffer (wird das überhaupt am Stück übertragen?), du kannst auch einen 100er-Puffer nehmen und in einer Schleife lesen.

Gruss
cwriter

/EDIT: Bei UDP ginge das wohl ein bisschen besser, da man dort einfach ein package ignorieren kann.
Den Stream direkt wegzuwerfen geht wohl nicht, ohne auf die Kernelebene zuzugreifen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück