HPUX ipcsend[2]

ipcsend(2) ipcsend(2)
NAME
ipcsend - send data on a NetIPC socket
SYNOPSIS
#include <sys/ns_ipc.h>
void ipcsend(
ns_int_t vcdesc,
const void *data,
ns_int_t dlen,
ns_int_t *flags,
short opt[],
ns_int_t *result);
DESCRIPTION
ipcsend() is used to send data on an established connection. The data
can be sent as a single contiguous buffer or as a scattered data
vector. If the data is vectored, NetIPC gathers all the referenced
data before sending it.
For vectored writes an iovec structure contains the data vector. An
iovec structure can be defined as:
struct iovec {
char *iov_base;
unsigned iov_len;
};
and the normal type for the data argument can be replaced by:
struct iovec *data;
Each iovec entry specifies the base address and length of an area in
memory where data should be accessed. ipcsend() always fills-in one
area completely before proceeding to the next area.
ipcsend() behaves differently, depending on whether the referenced
socket is in synchronous or asynchronous mode. These differences are
as follows:
Synchronous I/O.
Send requests issued against sockets in synchronous mode may block.
ipcsend() blocks if it cannot immediately obtain the buffer space
needed to accommodate the data. The call resumes after the required
buffer space becomes available or after the socket timer expires.
Timeouts are 60 seconds by default, and can be altered by calling
ipccontrol().
Asynchronous I/O.
Send requests issued against sockets in asynchronous mode never block.
If the buffer space required to accommodate the data is not
Hewlett-Packard Company - 1 - HP-UX Release 9.0: August 1992
ipcsend(2) ipcsend(2)
immediately available, a NSR_WOULD_BLOCK error (code 56) is returned.
After receiving this error, the process can try the call again later
or determine when the socket is writeable by calling ipcselect().
PARAMETERS
vcdesc (input parameter) Socket descriptor. Refers to
the virtual circuit (VC) socket endpoint of the
connection through which the data will be sent. A
VC socket descriptor is obtained by calling
ipcconnect() or ipcrecvcn().
data (input parameter) A buffer to hold the data being
sent, or a data vector that describes where the
data to be sent is located.
dlen (input parameter) If data is a data buffer, dlen
is the length in bytes of the data in the buffer.
If data is a data vector, dlen is the length in
bytes of the data vector.
flags (input parameter) See below.
opt (input parameter) An array of options and
associated information. See below.
result (output parameter) The error code returned. Refer
to ERRORS below for more information.
FLAGS PARAMETER
NSF_MORE_DATA (bit 26) (input parameter) When this bit is set,
the underlying network protocol can temporarily
delay sending data for efficiency reasons.
NSF_VECTORED (bit 31) (input parameter) When this bit is set,
the data parameter refers to a data vector and not
to a data buffer.
OPT PARAMETER
NSO_DATA_OFFSET (optioncode=8) (datalength=2) A two-byte integer
that indicates a byte offset from the beginning of
the data buffer where the data to be sent actually
begins. Only valid if the data parameter is a
data buffer.
RETURN VALUE
None. Errors are returned in the result parameter.
ERRORS
[NSR_BOUNDS_VIO] An address parameter is invalid.
Hewlett-Packard Company - 2 - HP-UX Release 9.0: August 1992
ipcsend(2) ipcsend(2)
[NSR_DESC] The vcdesc parameter is not a valid
descriptor.
[NSR_DLEN] The value specified in the dlen
parameter is invalid.
[NSR_DUP_OPTION] The opt array contains duplicate
information.
[NSR_FLAGS] An illegal flag was specified.
[NSR_MSGSIZE] An illegal data length was specified.
By default, data transfer is limited to
a 100 byte maximum. You can alter this
limit by calling ipccontrol() .
[NSR_NOT_CONNECTION] The vcdesc parameter is not a valid VC
socket.
[NSR_OPT_OPTION] An option in the opt parameter in
unknown or invalid.
[NSR_OPT_SYNTAX] A length or offset value in the opt
parameter is invalid.
[NSR_SIGNAL_INDICATION] The call aborted due to a signal.
[NSR_SOCKET_TIMEOUT] The socket timer expired before the data
could be transfered. By default, the
socket timer is 60 seconds. This value
can be altered by calling ipccontrol().
[NSR_TOO_MANY_VECTS] The maximum number of data vectors was
exceeded. The limit is 16.
[NSR_VECT_COUNT] An incorrect data length was specified
for vectored data.
[NSR_WOULD_BLOCK] The requested data cannot be sent at
this time.
AUTHOR
ipcsend() was developed by HP.
SEE ALSO
ipcconnect(2), ipccontrol(2), ipccreate(2), ipcdest(2),
ipcgetnodename(2), ipclookup(2), ipcname(2), ipcnamerase(2),
ipcrecv(2), ipcrecvcn(2), ipcselect(2), ipcsetnodename(2),
ipcshutdown(2), addopt(3N), initopt(3N), ipcerrmsg(3N),
optoverhead(3N), readopt(3N).
Hewlett-Packard Company - 3 - HP-UX Release 9.0: August 1992