Sample IPCINT Session [ Net IPC 3000/XL Programmer's Reference Manual ] MPE/iX 5.0 Documentation
Net IPC 3000/XL Programmer's Reference Manual
Sample IPCINT Session
The following example describes the steps to create a call socket, send
and receive data over a connection, and then close the socket using
IPCINT on a local node. This sample session assumes a remote node is
also using IPCINT. The remote node running IPCINT sends the local node a
message as described in step 7.
The steps below follow the SVC requestor processing example in Figure
1-10 (Chapter 1). The remote node should follow the steps in the SVC
server processing example in Figure 1-11 (Chapter 1).
User input is underlined in the examples provided. For information about
NetIPC intrinsic parameters refer to the intrinsic descriptions in
Chapter 3. Intrinsic parameter names that differ from the names used as
prompts in IPCINT are included in parentheses in the discussion of the
examples.
Step 1
Run the IPCINT program from the MPE XL prompt. A log of the session will
be written to a file named IPCLOG.
(1)
:RUN IPCINT.NET.SYS
(C) COPYRIGHT Hewlett-Packard Company 1989
>>>> IPC Interpreter B020000 FRI, SEP 15, 1989, 9:59 AM
>
To exit IPCINT at any time enter EX at the IPCINT prompt (>).
Step 2
Enter the IPCINT abbreviation for the desired intrinsic (See Table 5-1).
In this example, CR for IPCCREATE is entered.
You are prompted for all required input parameters. You must enter 2 for
X.25 direct access at the Protocol prompt. In this example, enter N (no)
at the Catch All socket prompt ( opt code 144, bit 2). Enter the
network name configured for your network at the Network name ( opt code
140) prompt.
After entering all required parameters, the intrinsic is executed. The
call socket descriptor ( calldesc) is returned in the pseudovariable "C".
The output parameters are interpreted and displayed. In this example, a
call socket has been created.
(2)
CR
Protocol: 2
Catch All socket (Y/N)? N
Network name (8 chars): X25net
-----> Executing : IPCCREATE
CALL = 12
Step 3
Execute the IPCDEST intrinsic by entering DEST at the prompt. You are
prompted for the remote Node name ( location) where the destination
socket will be created. In this example, RAINBOW is used. If you leave
the node name prompt blank, you will be prompted for the remote X.25
address expressed in hexadecimal.
Enter a protocol relative address ( protoaddr) in the decimal range 30767
to 32767 for the remote address. In this example, 31000 is used. The
IPCDEST intrinsic is executed and a destination descriptor ( destdesc)
will be returned in pseudovariable "D".
(3)
DEST
Node name (50 chars): RAINBOW
Protocol relative address (16 bit integer): 31000
-----> Executing : IPCDEST
DEST = - 1
Step 4
In order to execute this step, the remote node server program or IPCINT
must have already executed an IPCCREATE followed by an IPCRECVCN. The
remote waits for the local to send the connection request. NetIPC
provides a timeout so the IPCRECVCN will not wait indefinitely.
Execute IPCCONNECT by entering CN at the prompt. You are prompted for
the call socket descriptor. To use the default, press RETURN which is
the value returned in pseudovariable "C" by the previous call to
IPCCREATE.
You are prompted for the destination socket descriptor. To use the
default, press RETURN which is the value returned in pseudovariable "D"
by the previous call to IPCDEST.
You are prompted for access to the call user data (CUD) field (opt 144,
protocol flags, bit 17). In this example, Y (yes) is entered. Selecting
"yes" allows you to enter up to 128 bytes of user data at the Call User
Data (128 chars) prompt ( opt code 2).
Next, you are prompted for a facility set name ( opt code 142). To use
the default configured for you network, press RETURN. At the Special
Facility Field ( opt code 145) prompt, enter up to 109 characters
representing additional features to be added to the facility set. Press
RETURN for no additions to the facility field.
The IPCCONNECT intrinsic is executed and a virtual socket descriptor is
returned.
In the example, the statement, "No address in CUD" refers to the fact
that you requested full access to the CUD.
(4)
CN Source socket desc (32 bit integer/C/D/V): RETURN
Destination desc (32 bit integer /C/D/V): RETURN
No address in CUD (Y/N)? Y
Call User Data (128 chars): hFCAA0001
Facility name (8 chars): RETURN
Special Facility Field (109 chars): RETURN
-----> Executing : IPCCONNECT
VC = 7
No address in CUD
Step 5
Execute IPCRECV by entering R at the prompt to receive the response to
the previous connection request.
The default value for the VC socket descriptor is the value returned in
the last IPCCONNECT (or in the case of an incoming call, by IPCRECVCN).
This value is the default for any subsequent IPCSEND or IPCRECV calls.
To use default values, press RETURN. Buffer length ( dlen) defaults to
4096 bytes. Preview data and Destroy data ( flags 30 and 29) default
to no ( N). Data offset ( opt code 8) is defaulted to none.
(5)
R
Connect socket desc (32 bit integer /C/D/V): RETURN
Buffer length (bytes): RETURN
Preview data (Y/N)? RETURN
Destroy data (Y/N)? RETURN
Data offset (bytes):RETURN
-----> Executing : IPCRECV
MAX_LEN = 4096
RECV_LEN = 0
BUFFER = "
Note that there is no data returned in "Buffer" because the function of
this call to IPCRECV is to accept the connection request from the remote
node.
Step 6
Execute a call to IPCSEND by entering S at the prompt.
Enter a value for the buffer length. IPCINT will send a string of
characters equal to the number of bytes specified. If you enter 0 for
buffer length, you will be prompted to enter the contents of the data you
are sending. You can specify up to 80 characters of data. At the
Buffer prompt enter the data to send. In this example, 'Hello from
local' is entered.
Pressing RETURN at the VC socket desc prompt which default to the VC
socket descriptor returned by the previous call to IPCCONNECT (in this
example). To use default values, press RETURN. Q bit set and D bit set
( opt code 144, bit 19 and bit 18) are defaulted to no ( N). Data offset
( opt code 8) defaults to none.
(6)
S
Buffer length (bytes): 0
Buffer: 'Hello from local'
Connect socket desc (32 bit integer /C/D/V): RETURN
Q bit set (Y/N): RETURN
D bit set (Y/N)? RETURN
Data offset (bytes): RETURN
-----> Executing : IPCSEND
In order for the remote node to receive the sent data, an IPCRECV must be
executed from the remote node with IPCINT (or a server program).
Step 7
Before executing step 7, the remote must execute IPCSEND data to the
local node (see step 6, IPCSEND).
Execute IPCRECV to receive data by entering R at the prompt. Step 7
assumes a remote node using IPCINT has sent you a message.
Press RETURN to use the default VC socket descriptor ( vcdesc). To use
default values, press RETURN. Buffer length defaults to 4096 bytes.
Preview data and Destroy data (flags 30 and 29) default to no (N). Data
offset ( opt code 8) is defaulted to none.
Values returned by IPCRECV include data sent from the remote displayed
at the prompt: Buffer = ( data), length of the received data ( dlen),
and the buffer length input displayed as MAX_LEN ( dlen, from input).
(7)
R
Connect socket desc (32 bit integer /C/D/V: RETURN
Buffer length (bytes): RETURN
Preview data (Y/N)? RETURN
Destroy data (Y/N)?RETURN
Data offset (bytes): RETURN
-----> Executing : IPCRECV
MAX_LEN = 4096
RECV_LEN = 17
BUFFER = 'Hello from remote'
Step 8
Execute IPCSHUTDOWN to shutdown the socket by entering SHUT at the
prompt.
At the descriptor prompt, enter a descriptor (C, D or V) in order to
indicate which socket needs to be shutdown. In this example, the VC
socket descriptor, V is entered.
You are prompted for a reason code ( opt code 143). In this example,
100 is entered which will cause a clear packet to be sent. The clear
packet will contain a cause code zero (0), and diagnostic code 100. (
IPCCONTROL is used to access cause and diagnostic codes.)
(8)
SHUT
Descriptor (32 bit integer /C/D/V): V
Reason code (16 bit integer): 100
Call User Data (128 chars) :
-----> Executing : IPCSHUTDOWN
Step 9
Exit from the IPCINT program by entering EX at the prompt.
(9)
EX
MPE/iX 5.0 Documentation