midrange.com code scratchpad |
Name:
Russell
|
Scriptlanguage:
Plain Text
|
Tabwidth:
4
|
Date:
07/10/2019 07:45:31 pm
|
IP:
Logged
|
|
Description:
Socket Client Connection
|
Code:
- SEU==> MODBUS
- FMT H HKEYWORDS++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- *************** BEGINNING OF DATA *************************************
- 0001.01 H OPTION(*NODEBUGIO:*SRCSTMT:*NOUNREF)
- 0002.00 H DFTACTGRP(*NO) ACTGRP(*NEW)
- 0003.00 H BNDDIR('QC2LE') BNDDIR('SOCKTUT/SOCKUTIL')
- 0004.00 H DATEDIT(*YMD/)
- 0005.00 /copy socktut/qrpglesrc,socket_h
- 0006.00 /copy socktut/qrpglesrc,errno_h
- 0006.01 /copy socktut/qrpglesrc,sockutil_h
- 0257.00 *==============================================================*
- 0258.00 * MAIN
- 0259.00 *==============================================================*
- 0260.00 /free
- 0261.00
- 0262.00 // Initialize
- 0263.00 Exsr @INIT;
- 0263.01
- 0263.02 // Create a Socket
- 0285.01 Sock = socket(AF_INET:SOCK_STREAM:IPPROTO_IP);
- 0285.02 If (Sock < 0);
- 0285.03 return;
- 0285.05 Endif;
- 0285.06
- 0285.07 // Ask the operating system for some memory to store socket address
- 0285.08 addrlen = %size(sockaddr);
- 0285.09 p_connto = %alloc(addrlen);
- 0285.10
- 0285.11 // Point the socket address structure at the newly alloc mem area
- 0285.12 p_sockaddr = p_connto;
- 0285.13
- 0285.14 // Populate the sockaddr_in structure
- 0285.15 sin_family = AF_INET;
- 0285.16 sin_addr = IP2;
- 0285.17 sin_port = Port;
- 0285.18 sin_zero = *ALLx'00';
- 0285.19
- 0285.20 // Connect to Socket
- 0285.21 rc = connect(Sock: p_connto: addrlen);
- 0285.22 If (Sock < 0);
- 0285.23 callp close(sock);
- 0285.24 return;
- 0285.25 Endif;
- 0285.26
- 0285.27 // Format something to write to register
- 0285.29 request = '0001 0000 0006 01 06 189E 0001';
- 0285.30 reqlen = %len(%trim(request));
- 0285.31 callp Translate(reqlen: request: 'QTCPASC');
- 0285.32
- 0285.33
- 0285.34 // Send Request
- 0285.35 Exsr @Send;
- 0285.36
- 0285.40 // Close Socket
- 0285.41 callp close(sock);
- 0285.42
- 0285.45 Return;
- 0286.00 *inlr = *on;
- 0286.01 //==================================================================*
- 0286.02 // @Initialize *
- 0286.03 //==================================================================*
- 0286.04 Begsr @INIT;
- 0286.14
- 0286.15 // Today's Date
- 0286.16 RESET DateSys;
- 0286.17 Date8 = YRSYS + MNSYS + DYSYS;
- 0286.23
- 0286.24 host = '199.119.10.157';
- 0286.25 IP2 = inet_addr(%trim(host));
- 0286.26 Port = 1015;
- 0286.59 Endsr;
- 0286.60 //==================================================================*
- 0286.61 // @SEND
- 0286.62 //==================================================================*
- 0286.63 Begsr @SEND;
- 0286.64
- 0286.65 rc = send(sock: %addr(request): reqlen:0);
- 0286.66 If rc < reqlen;
- 0286.67 callp close(sock);
- 0286.68 Return;
- 0286.69 Endif;
- 0286.70
- 0286.78
- 0286.79 Endsr;
-
|
|
|