[an error occurred while processing this directive]

HP OpenVMS Systems

C Programming Language
Content starts here Compaq C

Compaq C
Run-Time Library Reference Manual for OpenVMS Systems


Previous Contents Index


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.


Previous Next Contents Index