Compaq C
Compaq C Run-Time Library Reference Manual for 
OpenVMS Systems
 
 
 
inet_netof
 
Returns the Internet network address portion of an Internet address.
 
 
Format
#include <in.h>
#include <inet.h>
 
int inet_netof (struct in_addr in);
 
  
 
Argument
in
An Internet address.
 
 
Description
This routine returns the Internet network address (NET) portion of a 
full Internet address.
 
 
Return Value
  
    | 
      x
     | 
    
      The Internet network portion of an Internet address in host byte order.
     | 
   
 
 
 
inet_network
 
Converts a text string representing an Internet network address in the 
standard Internet "." notation into an Internet network 
address as machine-format integer values.
 
 
Format
#include <in.h>
#include <inet.h>
 
int inet_network (char *cp);
 
  
 
Argument
cp
A pointer to an ASCIZ (null-terminated) character string containing a 
network address in the standard Internet "." format.
 
 
Description
This routine returns an Internet network address as machine-format 
integer values when given as its argument an ASCIZ string representing 
the address in the Internet standard "." notation.
 
 
Return Values
  
    | 
      --1
     | 
    
      Indicates that
      cp does not point to a proper Internet network address.
     | 
   
  
    | 
      x
     | 
    
      An Internet network address as machine-format integer values.
     | 
   
 
 
 
inet_ntoa
 
Converts an Internet address into a text string representing the 
address in the standard Internet "." notation.
 
 
Format
#include <in.h>
#include <inet.h>
 
char *inet_ntoa (struct in_addr in);
 
  
 
Argument
in
An Internet address in network byte order.
 
 
Description
This routine converts an Internet address into an ASCIZ 
(null-terminated) string representing that address in the standard 
Internet "." notation.
 
  Warning 
Arguments should not be passed as integers because of how 
Compaq C handles
struct
 arguments. 
     | 
   
 
Because the string is returned in a static buffer that will be 
overwritten by successive calls to
inet_ntoa
, it is recommended to copy the string to a safe place.
  
 
Return Value
  
    | 
      x
     | 
    
      A pointer to a string containing the Internet address in "." 
      notation.
     | 
   
 
 
 
ioctl
 
Controls socket operations only.
 
 
Format
#include <ioctl.h>
int ioctl (int d, unsigned long request, void 
*arg);
 
  
 
Arguments
d
Specifies the file descriptor of the requested device.
request
Specifies the
ioctl
 command performed on the device.
arg
Specifies parameters for this request. The type of arg is 
dependent on the specific
ioctl
 request and device to which the
ioctl
 is targeted.
 
 
Description
The
ioctl
 routine performs a variety of operations on sockets.
An
ioctl
 request has encoded in it, whether the parameter is an "in" parameter 
 or "out" parameter, and the size of the arg parameter in 
 bytes. The
ioctl
 request is defined in the
<ioctl.h>
 header file.
  
 
Return Values
  
    | 
      0
     | 
    
      Indicates success.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error; further specified in the global
      
      errno
      
              .
     | 
   
 
 
 
Errors
  
    | 
       
     | 
    
      If the
      
      ioctl
      
               routine fails,
      
      errno
      
               is set to one of the following values:
      
      - EBADF -- The
      d parameter is not a valid descriptor.
      
 - ENOTTY -- The
      d parameter is not associated with a character special device, 
      or the specified request does not apply to the kind of object that the
      d parameter references.
      
 - EINVAL -- Either the
      request or the
      arg parameter is not valid.
      
  
     | 
   
 
 
 
listen
 
Sets the maximum limit of outstanding connection requests for a socket 
that is connection-oriented.
 
 
Format
int listen (int s, int backlog);
  
 
Arguments
s
A socket descriptor of type SOCK_STREAM that has been created using
socket
.
backlog
The maximum number of pending connections that may be queued on the 
socket at any given time. The maximum cannot exceed 5.
 
 
Description
This routine creates a queue for pending connection requests on socket 
s with a maximum size of backlog. Connections may 
then be accepted with
accept
.
If a connection request arrives with the queue full (more than 
backlog connection requests pending), the client will receive 
a timeout.
 
See also
accept
,
connect
, and
socket
 in this section.
  
 
Return Values
  
    | 
      0
     | 
    
      Indicates success.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error;
      
      errno
      
               is set to one of the following values:
      
      - EBADF -- The socket descriptor is invalid.
      
 - ENOTSOCK -- The socket descriptor references a file, not a socket.
      
 - EOPNOTSUPP -- The socket is not of a type that supports the 
      operation
      
      listen
      
              .
      
  
     | 
   
 
 
 
ntohl
 
Converts longwords from network to host byte order.
 
 
Format
#include <in.h>
unsigned long int ntohl (unsigned long int netlong);
 
  
 
Argument
netlong
A longword in network byte order. Integers in network byte order cannot 
be used for arithmetic computation on VAX systems.
 
 
Description
This routine converts 32-bit unsigned integers from network byte order 
to host byte order.
The network byte order is the format in which data bytes are supposed 
to be transmitted through a network. All hosts on a network must send 
data in network byte order. Not all hosts have an internal data 
representation format that is identical to the network byte order. The 
host byte order is the format in which bytes are ordered internally on 
a specific host.
 
The host byte order on VAX systems differs from the network order.
 
This routine is most often used with Internet addresses and ports as 
returned by
gethostent
 and
getservent
, and when manipulating values in the structures. Network byte order 
places the byte with the most significant bits at lower addresses; VAX 
systems place the most significant bits at the highest address.
  
 
Return Value
  
    | 
      x
     | 
    
      A longword in host byte order.
     | 
   
 
 
 
ntohs
 
Converts short integers from network to host byte order.
 
 
Format
#include <in.h>
unsigned short int ntohs (unsigned short int netshort);
 
  
 
Argument
netshort
A short integer in network byte order. Integers in network byte order 
cannot be used for arithmetic computation on VAX systems.
 
 
Description
This routine converts 16-bit unsigned integers from network byte order 
to host byte order.
The network byte order is the format in which data bytes are supposed 
to be transmitted through a network. All hosts on a network must send 
data in network byte order. Not all hosts have an internal data 
representation format that is identical to the network byte order. The 
host byte order is the format in which bytes are ordered internally on 
a specific host.
 
The host byte order on VAX systems differs from the network order.
 
This routine is most often used with Internet addresses and ports as 
returned by
gethostent
 and
getservent
, and when manipulating values in the structures. Network byte order 
places the byte with the most significant bits at lower addresses; VAX 
systems place the most significant bits at the highest address.
  
 
Return Value
  
    | 
      x
     | 
    
      A short integer in host (VAX) byte order.
     | 
   
 
 
 
read
 
Reads bytes from a socket or file and places them in a buffer.
 
 
Format
#include <unixio.h>
int read (int d, void *buffer, int nbytes);
 
  
 
Arguments
d
A descriptor that must refer to a socket or file currently opened for 
reading.
buffer
The address of contiguous storage in which the input data is placed.
nbytes
The maximum number of bytes involved in the read operation.
 
 
Description
If the end-of-file is not reached, the
read
 routine returns nbytes. If the end-of-file occurs during the
read
routine, it returns the number of bytes read.
Upon successful completion,
read
 returns the number of bytes actually read and placed in the buffer.
 
See also
socket
 in this section.
  
 
Return Values
  
    | 
      x
     | 
    
      The number of bytes read and placed in the file.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error;
      
      errno
      
               is set to one of the following:
      
      - EBADF -- The socket descriptor is invalid.
      
 - EFAULT -- The
      buffer points outside the allocated address space.
      
 - EINVAL -- The
      nbytes argument is negative.
      
 - EWOULDBLOCK -- The
      
      NBIO
      
               socket option (nonblocking) flag is set for the socket or file 
               descriptor and the process would be delayed in the read operation.
      
  
     | 
   
 
 
 
recv
 
Receives bytes from a connected socket and places them into a buffer.
 
 
Format
#include <socket.h>
int recv (int s, char *buf, int len, int 
flags);
 
 (_DECC_V4_SOURCE)
ssize_t recv (int s, void *buf, size_t len, 
int flags);
 
 (NOT _DECC_V4_SOURCE)
  
 
Arguments
s
A socket descriptor that was created as the result of a call to
accept
 or
connect
.
buf
A pointer to a buffer into which received data will be placed.
len
The size of the buffer pointed to by buf.
flags
A bit mask that may contain one or more of
MSG_OOB
 and
MSG_PEEK
. It is built by ORing the appropriate values together.
The
MSG_OOB
 flag allows out-of-band data to be received. If out-of-band data is 
 available, it will be read before any other data that is available. If 
 no out-of-band data is available, the
MSG_OOB
 flag is ignored. Out-of-band data can be sent using
send
,
sendmsg
, and
sendto
.
 
The
MSG_PEEK
flag allows you to peek at the data that is next in line to be received 
without removing it from the system's buffers.
  
 
Description
This routine receives data from a connected socket. To receive data on 
an unconnected socket, use the
recvfrom
 or
recvmsg
 routines. The received data is placed in the buffer buf.
Data is sent by the socket's peer using the
send
,
sendmsg
, or
sendto
 routines.
 
You may use the
select
 routine to determine when more data arrives.
 
If no data is available at the socket, the receive call waits for data 
to arrive, unless the socket is nonblocking in which case a --1 is 
returned with the external variable
errno
 set to
EWOULDBLOCK
.
 
See also
read
,
send
,
sendmsg
,
sendto
, and
socket
 in this section.
  
 
Return Values
  
    | 
      x
     | 
    
      The number of bytes received and placed in
      buf.
     | 
   
  
    | 
      0
     | 
    
      Indicates that a connection is broken or reset by its peer.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error;
      
      errno
      
               is set to one of the following:
      
      - EBADF -- The socket descriptor is invalid.
      
 - ENOTSOCK -- The descriptor references a file, not a socket.
      
 - EPIPE -- An attempt was made to write to a socket that is not open 
      for reading by any process.
      
 - EWOULDBLOCK -- The
      
      NBIO
      
               socket option (nonblocking) flag is set for the socket or file 
               descriptor and the process would be delayed in the read operation.
      
 - EFAULT -- The data was specified to be received into a non-existent 
      or protected part of the process address space.
      
  
     | 
   
 
 
 
recvfrom
 
Receives bytes from a socket from any source.
 
 
Format
#include <socket.h>
int recvfrom (int s, char *buf, int len, int 
flags, struct sockaddr *from, int *fromlen)
 
;  (_DECC_V4_SOURCE)
ssize_t recvfrom (int s, void *buf, size_t 
len, int flags, struct sockaddr *from, 
size_t *fromlen)
 
;  (NOT _DECC_V4_SOURCE)
  
Routine Variants This socket routine has a variant named
__bsd44_recvfrom
. Enabled by defining
_SOCKADDR_LEN
, this variant implements 4.4BSD-compatible semantics. See 
Section A.7 for more information.
 
Arguments
s
A socket descriptor that has been created with
socket
 and bound to a name using
bind
 or as a result of
accept
.
buf
A pointer to a buffer into which received data will be placed.
len
The size of the buffer pointed to by buf.
flags
A bit mask that may contain one or more of
MSG_OOB
 and
MSG_PEEK
. It is built by ORing the appropriate values together.
The
MSG_OOB
 flag allows out-of-band data to be received. If out-of-band data is 
 available, it will be read before any other data that is available. If 
 no out-of-band data is available, the
MSG_OOB
flag is ignored. Out-of-band data can be sent using
send
,
sendmsg
, and
sendto
.
 
The
MSG_PEEK
flag allows you to peek at the data that is next in line to be received 
without actually removing it from the system's buffers.
 from
If from is nonzero, from is a buffer into which
recvfrom
 places the address (structure) of the socket from which the data is 
 received. If from was 0, the address will not be returned.
fromlen
Points to an integer containing the size of the buffer pointed to by 
from. On return, the integer is modified to contain the actual 
length of the socket address structure returned.
 
 
Description
This routine allows a named, unconnected socket to receive data. The 
data is placed in the buffer pointed to by buf, and the 
address of the sender of the data is placed in the buffer pointed to by 
from if from is non-NULL. The structure that 
from points to is assumed to be as large as the
sockaddr
 structure. See
<socket.h>
 for a description of the
sockaddr
 structure.
To receive bytes from any source, the sockets need not be connected to 
another socket.
 
You may use the
select
 routine to determine if data is available.
 
If no data is available at the socket, the
recv
 call waits for data to arrive, unless the socket is nonblocking, in 
 which case a --1 is returned with the external variable
errno
 set to
EWOULDBLOCK
.
 
See also
read
,
send
,
sendmsg
,
sendto
, and
socket
 in this section.
  
 
Return Values
  
    | 
      x
     | 
    
      The number of bytes of data received and placed in
      buf.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error;
      
      errno
      
               is set to one of the following values:
      
      - EBADF -- The socket descriptor is invalid.
      
 - ENOTSOCK -- The socket descriptor references a file, not a socket.
      
 - EPIPE -- An attempt was made to write to a socket that is not open 
      for reading by any process.
      
 - EWOULDBLOCK -- The
      
      NBIO
      
               (nonblocking) flag is set for the socket descriptor and the process 
               would be delayed in the write operation.
      
 - EFAULT -- The data was specified to be received into a non-existent 
      or protected part of the process address space.
      
  
     | 
   
 
 
 
recvmsg
 
Receives bytes on a socket and places them into scattered buffers..
 
 
Format
#include <socket.h>
int recvmsg (int s, struct msghdr msg[], int 
flags);
 
  
Routine Variants This socket routine has a variant named
__bsd44_recvmsg
. Enabled by defining
_SOCKADDR_LEN
, this variant implements 4.4BSD-compatible semantics. See 
Section A.7 for more information.
 
Arguments
s
A socket descriptor that has been created with
socket
.
msg
A
msghdr
 structure. See
<socket.h>
 for a description of the
msghdr
 structure.
flags
A bit mask that may contain one or more of
MSG_OOB
and
MSG_PEEK
. It is built by ORing the appropriate values together.
The
MSG_OOB
 flag allows out-of-band data to be received. If out-of-band data is 
 availiable, it will be read before any normal data that is available. 
 If no out-of-band data is available, the
MSG_OOB
 flag is ignored. Out-of-band data can be sent using
send
,
sendmsg
, and
sendto
.
 
The
MSG_PEEK
flag allows you to peek at the data that is next in line to be received 
without actually removing it from the system's buffers.
  
 
Description
This routine may be used with any socket, whether it is in a connected 
state or not. It receives data sent by a call to
sendmsg
,
send
, or
sendto
. The message is scattered into several user buffers if such buffers 
are specified.
To receive data, the socket need not be connected to another socket.
 
When the
iovec[iovcnt]
 array specifies more than one buffer, the input data is scattered into
iovcnt
 buffers as specified by the members of the
iovec array:
 
 
  
    
       
      
iov[0], iov[1], ..., iov[iovcnt] 
 
 |   
When a message is received, it is split among the buffers by filling 
the first buffer in the list, then the second, and so on, until either 
all of the buffers are full or there is no more data to be placed in 
the buffers.
 
When a message is sent, the first buffer is copied to a system buffer 
and then the second buffer is copied, followed by the third buffer and 
so on, until all the buffers are copied. After the data is copied, the 
protocol will send the data to the remote host at the appropriate time, 
depending upon the protocol.
 
You may use the
select
 routine to determine when more data arrives.
 
See also
read
,
send
, and
socket
 in this section.
  
 
Return Values
  
    | 
      x
     | 
    
      The number of bytes returned in the
      
      msg_iov
      
               buffers.
     | 
   
  
    | 
      --1
     | 
    
      Indicates an error;
      
      errno
      
               is set to one of the following values:
      
      - EBADF -- The socket descriptor is invalid.
      
 - ENOTSOCK -- The socket descriptor references a file, not a socket.
      
 - EPIPE -- An attempt was made to write to a socket that is not open 
      for reading by any process.
      
 - EWOULDBLOCK -- The
      
      NBIO
      
               (nonblocking) flag is set for the socket descriptor and the process 
               would be delayed in the write operation.
      
 - EINTR -- The receive was interrupted by delivery of a signal before 
      any data was available for the receive.
      
 - EFAULT -- The data was specified to be received into a non-existent 
      or protected part of the process address space.
      
  
     | 
   
 
 
  
         |