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



     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
 
This error check is not actually correct: when using non-blocking sockets
with TCP, connect() will return -1 and set errno to EINPROGRESS:
 
[1]https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/apis/connec.htm
 
In this case, you'll need to use the poll() or select() APIs to determine
when the connection has actually been established:
[2]https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzab6/poll.htm
 

----- Original message -----
From: Richard Schoen via MIDRANGE-L <midrange-l@xxxxxxxxxxxxxxxxxx>
Sent by: "MIDRANGE-L" <midrange-l-bounces@xxxxxxxxxxxxxxxxxx>
To: "midrange-l@xxxxxxxxxxxxxxxxxx" <midrange-l@xxxxxxxxxxxxxxxxxx>
Cc: Richard Schoen <Richard.Schoen@xxxxxxxxxxxxxxx>
Subject: Re: Example socket program to send data to a non IBM i device
Date: Mon, Mar 4, 2019 12:21 PM
 
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.

[3]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
>> ------------------------------

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: [4]https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at [5]https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: [6]https://amazon.midrange.com
 

 

References

Visible links
1. https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/apis/connec.htm
2. https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzab6/poll.htm
3. https://www.scottklement.com/rpg/socktut/tutorial.html
4. https://lists.midrange.com/mailman/listinfo/midrange-l
5. https://archive.midrange.com/midrange-l
6. https://amazon.midrange.com/

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.