> The problem was on the receiver side. Inside DataAvailable there > are onerous instructions for CPU. So winsock messages > tend to accumulate in Message queue. > When new packets arrive, the receiver progressively reduce > TCP sliding window until 0.
That is perfectly correct and expected behaviour. If receiver is not able to process data quickly enough, sender has to pause sending. TCP window is there to avoid congestion with not acknowledged data packets while avoiding slow down because of round trip between sender and receiver. (Sending the next packet only when previous one has been acknowledged would drastically reduce thruput. The TCP window allow sender to send packet before having received ACK, but at most to the size of the TCP window). Back to the receiver code: with such processing, no winsock message can accumulate in the message queue. Only a single winsock message is posted in the queue whatever data is received. And no more message will be posted by winsock, even if more data comes in, until the application call Receive. There is not one message per packet, there is one message per call to receive (plus the initial message of course). At sender side, as TWSocket automatically buffer data, if you don't use OnDataSent to know when to send more data and instead simply send everything you have to send, you'll end up with all data in memory, in TWSocket send buffer. This means that if you have lots of data to send, send chunk by chunk (for example 4 or 8KB). Send next chunk when you receive OnDataSent event. This will produce a continuous flow because you receive OnDataSent when TWSocket has emptyed his buffer. At that time, winsock still has his own buffer full and continue to send while you are fetching data from disk or from elsewhere. Contribute to the SSL Effort. Visit http://www.overbyte.be/eng/ssl.html -- [EMAIL PROTECTED] Author of ICS (Internet Component Suite, freeware) Author of MidWare (Multi-tier framework, freeware) http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be