CAsyncSocket Zuverlässigkeit?
-
Hallo,
ich habe einen Stream Socket erstellt und kopiere große Datenmengen (1MB) mit CAsyncSocket. Ist ein solcher Stream zuverlässig?
Ich vermute der Stream wird auf jeden Fall noch in Packete in Größe von MTU verpackt oder anders in Packet dezimiert. Ist es sicher, das die Packete in der richtigen Reihenfolge ankommen?Wen dem so ist, frage ich mich, wie groß der Puffer der Daten ist, wenn diese nicht sofort abgeholt werden, und wie lange ihre "Time to live" in diesem Puffer ist.
Wäre schön, wenn das jemand schon weis!
Grüße
TheNoName
-
Wenn du SOCK_STREAM wird TCP benutzt und somit ist die richtige Reihenfolge garantiert. Die Puffergrößen kannst du mit GetSockOpt mit den Parameter SO_RCVBUF und SO_SNDBUF erfragen. Sind normalerweise 8 kb groß.
Du musst bei CAsyncSocket eigentlich nur beachten der Socket in den Non-Blocking versetzt wird => Beim Send wird nur soviel geschrieben bis der interne Puffer voll.
-
Sorry wenn ich hier nochmal genauer nachbohre:
Angenommen ich übermittle meine 1MB...
Dann sende ich mit dem Befehl SendTo oder Send einfach die 1MB ab.Mein Fragen:
Wann kehrt SendTo zurück?
a.) nach 1MB
b.) sofort, alles geht in einen größeren Buffer bzw. der übergebene Buffer darf nicht gelöscht werden
c.) kehrt nach einem Timeout X zurück, weil die Gegenseite nicht schnell genug eingelesen hat (wie nennt sich dieser)Wird der Empfangspuffer auf z.B. 8kb gefüllt und nicht abgefragt: Bricht die SendTo Funktion dann sofort ab?
Ich habe versucht diese Infos auf der MSDN zu finden, komme aber mit den spärlichen Daten nicht zurecht. Gibt es genauere Seiten als die CAsyncSocket MSDN Hilfe?
Grüße
TheNoName
-
Vielleicht hilft dir die Dokumentation zu WSAAsyncSelect weiter.