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



Jeff,

Yes, I understand all of that.

The reason it works when you have data in the socket is because the recv() API will return the data instead of waiting for more.

A blocking socket will sit and wait for more data. A non-blocking socket never sits and waits for more data.

This is NOT done within the nbrecv() routine... it must be done by you before you call nbrecv. The article explains how to put the socket into non-blocking mode. If you haven't put it into nonblocking mode. You will have the problem that you are reporting.

I understand what you are saying about moving the select before the recv -- personally, i think this is a poor solution. In my experience, your application will be more robust with the recv() first and using a non-blocking socket.

-SK

On 9/18/2015 1:09 PM, Jeff Young wrote:
Scott,
I was using the nbrecv procedure from the article
http://iprodeveloper.com/rpg-programming/timeouts-sockets.
I copied the code from there and was using that version.
As long as the socket contained data, there was no problem.
As soon as there was no data available, the recv() function just hung up.
I changed my procedure to move the recv() after the select() and now it is
working fine.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.