× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.