Scott Klement has an excellent socket tutorial on his web site.
Mark Walter
Paragon Consulting Services, Inc.
IBM Certified System i Specialist
717-764-7909 Ext. 26
mwalter@xxxxxxxxxxxxxxx
www.paragon-csi.com
Ted Slate <tslateone@xxxxxxxxxxx> 
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
02/06/2008 11:54 AM
Please respond to
RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx>
To
<rpg400-l@xxxxxxxxxxxx>
cc
Subject
RE: TCP/IP Sockets from RPG
There are many(almost 20) error conditions that recv can return on the i.  
A -1 return code means check errno for one of many conditions. In fact, 
the end of a receive stream does not close a socket connection unless an 
error should occur on the other end.   If you get a 0 return code(amount) 
then you can close the socket(your end) and re-connect depending on the 
application.  But as I stated before, the amount of transmission send and 
receive should not be a guesstimate, so you should know when to stop 
requesting data in some way shape or form.  You cannot just keep reading 
bytes until a return code less than 1.
 
If you want to get started with socket programming on the i start here:
 
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/apis/aplist.htm
 
Subject: RE: TCP/IP Sockets from RPG> Date: Wed, 6 Feb 2008 08:54:13 
-0600> From: Lim.Hock-Chai@xxxxxxxxxxxxxxx> To: rpg400-l@xxxxxxxxxxxx> > 
Looking at Scott's rdline example, seems like it will return a -1 when> 
recv() returned value is less than 1.> > You migth want to debug rdline to 
see what is the actual value that> recv() returned. If it is a 0, that 
means the server has disconnected> you connection.> > > > -----Original 
Message-----> From: rpg400-l-bounces@xxxxxxxxxxxx> 
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Christopher Anderson> 
Sent: Monday, February 04, 2008 11:07 AM> To: rpg400-l@xxxxxxxxxxxx> 
Subject: TCP/IP Sockets from RPG> > > Good morning everyone,> > I've been 
attempting to create a socket connection to a report vendor> using Scott 
Klement's (hi Scott) tutorial on that subject. I've managed> to 
successfully establish the socket connection AND send the request> records 
downstream but the segment of the program that accepts the> response 
doesn't
 
  work as I anticipated which leads me to believe I'm not> getting the 
concept very well. > > What I need to do is accept a number of records 
into the buffer until I> get an END TRANSMISSION record. Each record will 
be the same length and> is identified internally. So, I'll grab one 
record, decide what type it> is and process it then read the next record 
from the buffer. I'm also> supposed to put a 60 second time out on this 
segment of code but we'll> blow up that bridge later.> > The logic is:> > 
DOU LastRecord = *On;> rc = rdline(sock: %addr(recbuf): %size(recbuf): 
*On);> if rc < 0;> err = errno;> callp close(sock);> callp die('rdline(): 
' + %str(strerror(err)));> return;> endif;> > TestRecord = recbuf; // This 
moves what's in the buffer into a> DS that can locate the > // record type 
field.> // Process record.> > ENDDO;> > What happens is the system works 
for a while on the rc=rdline... Line> then returns -1 for rc and the errno 
variable comes back with an error> when I at
 
 tempt to eval it in debug. (A type error). > > Does anyone have any idea 
what I'm doing wrong or what I'm missing? > > Thank you,> Chris Anderson> 
Partners Mutual Insurance> --> This is the RPG programming on the AS400 / 
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.> > -- > This 
is the RPG programming on the AS400 / 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.> 
_________________________________________________________________
Connect and share in new ways with Windows Live.
http://www.windowslive.com/share.html?ocid=TXT_TAGHM_Wave2_sharelife_012008
As an Amazon Associate we earn from qualifying purchases.