|
Thanks gentlemen. Sometimes select() fails to detect when more data is truly available. I'm not sure why select() fails. My client receive buffer size is huge; I know the server never completely fills it. I know the client sets the fd_set bits correctly. The server basically loops like this: DO FOREVER; RC = READ( client ); RC = WRITE( client ); ENDDO; and the client basically talks like this: RC = WRITE( server ); DOU X = 0; RC = READ( server ); // size available is huge X = SELECT( read_set, wait time=0 ); ENDDO; If the server sends more than our CHGTCPA TCPRCVBUF(8192) value, the client loops until X=0. This works fine---99.9% of the time. But about once every thousandth time, select() fails to detect when more data is truly available, and the DOU ends after one iteration with X=0. Why does the select() periodically fail? How can my client truly, TRULY determine if more data is available from the server? Do I need a non-zero wait time? What is a reasonable value?
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.