Programmieren: Daten im TCP gebuffert?
Jan-Benedict Glaw
jbglaw at lug-owl.de
Wed May 26 11:20:22 CEST 2004
On Wed, 2004-05-26 10:03:09 +0200, Christian Weddeling <christian.weddeling at web.de>
wrote in message <1065826580 at web.de>:
[...die längste Prali^WZeile der Welt:-]
> Ich habe hier eine Anwendung (Client, Server) geschrieben, die über
> eine TCP-IP-Socket kommuniziert. Gelegentlich kommt es vor, das ein
> Datenpacket vom Client an den Server geschickt wird, dort aber nicht
> vollständig ankommt. Der Rest wird aber erst dann geschickt, wenn
> wieder ein weiteres Datenpacket geschickt wird. Das kann dann schon
> mal einige Minuten dauern und bis dahin hängt die Anwendung ziemlich
> in der Luft
Du solltest wohl select() benutzen, um erstmal zu prüfen, ob denn
gelesen werden kann. Kommt zu lange nichts, shutdown() und alles von
vorn.
Es kann aber auch sein, daß einfach Daten nicht sofort gesendet werden.
Da gibt's Verfahren, um mehrere schnell aufeinanderfolgende
send()/...-Aufrufe zu kombinieren (Stichwort "Nagle-Algorithmus"). Das
kannst Du über TCP_NODELAY ausschalten. Guck' mal, ob's damit besser
wird.
> Das nicht unbedingt alle Daten in ein IP-Packet passen, ist mir ja
> klar, aber wieso bleibt denn aber der Rest stecken?
U.U. wg. Nagle:)
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg
fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak!
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20040526/150f17ca/attachment.sig>
More information about the Linux
mailing list