The SEND macro sends datagrams on a specified connected
socket.
FLAGS allows you to:
- Send out-of-band data, for example, interrupts, aborts, and data
marked urgent. Only stream sockets created in the AF_INET address
family support out-of-band data.
- Suppress use of local routing tables. This implies that the caller
takes control of routing and writing network software.
For datagram sockets, SEND transmits the entire datagram
if it fits into the receiving buffer. Extra data is discarded.
For stream sockets, data is processed as streams of information
with no boundaries separating the data. For example, if a program
is required to send 1000 bytes, each call to this function can send
any number of bytes, up to the entire 1000 bytes, with the number
of bytes sent returned in RETCODE. Therefore,
programs using stream sockets should place this call in a loop and
reissue the call until all data has been sent.
The following requirements apply to this call:
Authorization: |
Supervisor state or problem state, any PSW key. |
Dispatchable unit mode: |
Task. |
Cross memory mode: |
PASN = HASN. |
Amode: |
31-bit or 24-bit.
|
ASC mode: |
Primary address space control (ASC) mode. |
Interrupt status: |
Enabled for interrupts. |
Locks: |
Unlocked. |
Control parameters: |
All parameters must be addressable by the caller
and in the primary address space. |
>>-EZASMI--TYPE=SEND--,S--=--+-number---+----------------------->
+-address--+
+-*indaddr-+
'-(reg)----'
>--,NBYTE--=--+-number---+--,BUF--=--+-address--+--------------->
+-address--+ +-*indaddr-+
+-*indaddr-+ '-(reg)----'
'-(reg)----'
>--+------------------------+--,ERRNO--=--+-address--+---------->
'-,ALET--=--+-address--+-' +-*indaddr-+
+-*indaddr-+ '-(reg)----'
'-(reg)----'
>--,RETCODE--=--+-address--+------------------------------------>
+-*indaddr-+
'-(reg)----'
>--+--------------------------------+--------------------------->
'-,FLAGS--=--+-'MSG_OOB'-------+-'
+-'MSG_DONTROUTE'-+
+-address---------+
+-*indaddr--------+
'-(reg)-----------'
>--+---------------------------+--+-------------------------+--->
+-,ECB--=--+-address--+-----+ '-,ERROR--=--+-address--+-'
| +-*indaddr-+ | +-*indaddr-+
| '-(reg)----' | '-(reg)----'
'-,REQAREA--=--+-address--+-'
+-*indaddr-+
'-(reg)----'
>--+------------------------+----------------------------------><
'-,TASK--=--+-address--+-'
+-*indaddr-+
'-(reg)----'
- Keyword
- Description
- S
- Input parameter. A value or the address
of a halfword binary number specifying the socket descriptor of the
socket that is sending data.
- NBYTE
- Input parameter. A value or the address
of a fullword binary number specifying the number of bytes to transmit.
- BUF
- The address of the data being transmitted.
The length of BUF must be at least as long
as the value of NBYTE.
- ALET
- Optional input parameter. A fullword
binary field containing the ALET of BUF. The default is 0 (primary address space).
If a nonzero ALET is specified, the ALET must represent a valid entry in the dispatchable unit access list
(DU-AL) for the task issuing this call. Note that ALETs can be specified only for synchronous socket calls (for example,
ECB/REQAREA cannot be specified). An exception to this is an ALET representing a SCOPE=COMMON data space.
- ERRNO
- Output parameter. A fullword binary
field. If RETCODE is negative, this field
contains an error number. See Socket call error return codes for information about ERRNO return codes.
- RETCODE
- Output parameter. A fullword binary
field.
- Value
- Description
- 0 or >0
- A successful call. The value is set to the number of bytes transmitted.
- -1
- Check ERRNO for an error code.
- FLAGS
- Input parameter. FLAGS can be a literal value or a fullword binary field:
Literal Value |
Binary Value |
Description |
---|
'MSG_OOB' |
X'00000001' |
Send out-of-band data. (Stream sockets
only.) |
'MSG_DONTROUTE' |
X'00000004' |
Do not route. Routing is handled
by the calling program. |
- ECB or REQAREA
- Input parameter. This parameter is required if you are
using APITYPE=3. It points to a 104-byte field containing:
- For ECB
- A 4-byte ECB posted by TCP/IP when the
macro completes.
- For REQAREA
- A 4-byte user token (set by you) that is presented to your exit
when the response to this function request is complete.
- For ECB/REQAREA
- The last 100 bytes is a storage field used by the interface to
save the state information.
Note: This storage must not be modified until the
macro function has completed and the ECB has been posted, or the asynchronous exit has been driven.
- ERROR
- Input parameter. The location in your program to receive
control when the application programming interface (API) processing
module cannot be loaded.
- TASK
- Input parameter. The location of the task storage area in your
program.