Not sure if this exactly what you're trying to do but I believe if you want to control timeout on connect you need to use the select operation.
See Scotts tutorials on this. Otherwise socket connect timeouts can be long or can lock the app.
https://www.scottklement.com/rpg/socktut/tutorial.html
Regards,
Richard Schoen
Director of Document Management
e. richard.schoen@xxxxxxxxxxxxxxx
p. 952.486.6802
w. helpsystems.com
----------------------------------------------------------------------
message: 1
date: Mon, 4 Mar 2019 12:30:27 -0500
from: a4g atl <a4ginatl2@xxxxxxxxx>
subject: Re: Example socket program to send data to a non IBM i device
I finally got the code from the older hardware. I still have the long timeout. I am posting the code for review.
Thanks
Darryl Freinkel.
C*************************************************
C* Create a socket
C*************************************************
c eval sock = socket(AF_INET: SOCK_STREAM:
c IPPROTO_IP)
c if sock < 0
c eval msg = 'Error calling socket()!'
c dsply msg
c return
c endif
C*************************************************
C* Create a socket address structure that
C* describes the host & port we wanted to
C* connect to
C*************************************************
c eval addrlen = %size(sockaddr)
c alloc addrlen p_connto
c eval p_sockaddr = p_connto
c eval sin_family = AF_INET
c eval sin_addr = IP_address
c eval sin_port = port
c eval sin_zero = *ALLx'00'
c eval flags = fcntl(sock: F_GETFL)
c if flags < 0
c eval flags = flags
debug
c Endif
c* callp FD_ZERO(writeset)
c* eval flags = flags + O_NONBLOCK
c eval flags = %bitor(flags : O_NONBLOCK)
c callp FD_SET(sock : writeset)
c select
c when rc = -1
c exsr error_message
c callp close(sock)
c return
c Endsl
C*************************************************
C* Connect to the requested host
C*************************************************
C if connect(sock: p_connto: addrlen) < 0
c eval msg = 'unable to connect to server!'
c* dsply msg
c exsr error_message
On Thu, Feb 28, 2019 at 5:21 PM a4g atl <a4ginatl2@xxxxxxxxx> wrote:
Scott
Apologies for the delay in responding. The system I developed the code
on was the old hardware and to my surprise it was decommissioned with
the admins checking with me. I am waiting for the Library to be
restored so that I can be more specific with what I tested. I do
remember trying the non blocking option too but will confirm tomorrow I hope.
@Richard, unfortunately I am not a .net person.
I will look at Python as it will run on the IBMi, but everyone would
prefer the RPG option.
Thanks
On Thu, Feb 28, 2019 at 8:53 AM Richard Schoen via MIDRANGE-L <
midrange-l@xxxxxxxxxxxxxxxxxx> wrote:
I haven't been following this thread closely, but I have a thought
for you.
You should be able to create a VB.Net or C# app that connects to the
device.
Once you test it on the PC in Visual Studio you can move the EXE over
to IBMi using the new Mono .Net functionality.
You'll probably more readily find .Net examples than RPG ones.
Food for thought.......
Regards,
Richard Schoen
Director of Document Management
e. richard.schoen@xxxxxxxxxxxxxxx
p. 952.486.6802
w. helpsystems.com
------------------------------