|
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.
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
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.