United States

Compaq C

# Compaq C
Run-Time Library Reference Manual for OpenVMS Systems

Previous | Contents | Index

# close

> Closes a connection and deletes a socket descriptor.

## Format

> #include <unixio.h>

> int close (s);

## Argument

> ### s

> A socket descriptor.

## Description

> This routine deletes a descriptor from the per-process object reference table. If this is the last reference to the underlying object, then it will be deactivated.

> See also `accept` , `socket` , and `write` in this section.

## Return Values

> 0 | Indicates success.
> --1 | Indicates an error; `errno` is set to EBADF (The socket descriptor is invalid.)

# connect

> Initiates a connection on a socket.

## Format

> #include <socket.h>

> int connect (int s, struct sockaddr *name, int namelen);

> (_DECC_V4_SOURCE) int connect (int s, const struct sockaddr *name, size_t namelen);

> (NOT _DECC_V4_SOURCE)

Routine Variants This socket routine has a variant named `__bsd44_connect` . 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` .

> ### name

> The address of a structure that specifies the name of the remote socket in the format specific to the address family (AF_INET).

> ### namelen

> The size, in bytes, of the structure pointed to by name.

## Description

> If s is a socket descriptor of type SOCK_DGRAM, then this call permanently specifies the peer to which data is to be sent. If it is of type SOCK_STREAM, then this call attempts to make a connection to another socket.

> Each communications space interprets the name parameter in its own way. This argument specifies the socket to which the socket specified in s is to be connected.

> See also `accept` , `select` , `socket` , `getsockname` , and `shutdown` in this appendix.

## Return Values

> 0 | Indicates success.
> --1 | Indicates an error; `errno` is set to one of the following: EBADF -- The socket descriptor is invalid. ENOTSOCK -- The socket descriptor references a file, not a socket. EADDRNOTAVAIL -- specified address is not available from the local machine. EAFNOSUPPORT -- Address in the specified address family cannot be used with this socket. EISCONN -- The socket is already connected. ETIMEOUT -- Connection establishment timed out without establishing a connection. ECONNREFUSED -- The attempt to connect was forcefully rejected. ENETUNREACH -- The network is not reachable from this host. EADDRINUSE -- The specified Internet address and ports are already in use. EFAULT -- The name parameter is not a valid part of the user address space. EWOULDBLOCK -- The socket is nonblocking and the connection cannot be completed immediately. It is possible to `select` the socket while it is connecting by selecting it for writing.

# decc$get_sdc

> Returns the Socket Device Channel (SDC) associated with a socket descriptor for direct use with the TCP/IP Services for OpenVMS product.

## Format

> #include <socket.h>

> short int decc$get_sdc (int s);

## Argument

> ### s

> A socket descriptor.

## Description

> This routine returns the SDC associated with a socket. C socket descriptors are normally used either as file descriptors or with one of the routines that take an explicit socket descriptor as its argument. C sockets are implemented using TCP/IP Services for OpenVMS Socket Device Channels. This routine returns the SDC used by a given socket descriptor so that you can use the TCP/IP Services for OpenVMS's facilities directly by means of various I/O system services ($QIO).

## Return Values

> 0 | Indicates that s is not an open socket descriptor.
> x | The SDC number.

# endhostent

> Closes host database file.

## Format

> #include <netdb.h>

> void endhostent (void);

## Description

> The `endhostent` routine closes the network host database file, previously opened with the `gethostbyaddr` or `gethostbyname` routine.

> See also `gethostbyaddr` , and `gethostbyname` in this section.

## Errors

> | If the `endhostent` routine does not exist in your TCP/IP library, then `errno` is set to ENOSYS.

# endnetent

> Closes the networks database file.

## Format

> #include <netdb.h>

> void endnetent (void);

## Description

> The `endentent` routine closes the networks database file, previously opened with the `getnetent` , `setnetent` , `getnetbyaddr` or `getnetbyname` routine.

> See also `getnetent` , `getnetbyaddr` , `getnetbyname` , and `setnetent` in this section.

## Errors

> | If the `endnetent` routine does not exist in your TCP/IP library, then `errno` is set to ENOSYS.

# endprotoent

> Closes the protocols database file.

## Format

> #include <netdb.h>

> void endprotoent (void);

## Description

> The `endprotoent` routine closes the network protocols database file, previously opened with the `getprotoent` , `getprotobyname` , or `getprotobynumber` routine.

> See also `getprotobyname` , `getprotoent` and `getprotobynumber` in this section.

## Errors

> | If the `endprotoent` routine does not exist in your TCP/IP library, then `errno` is set to ENOSYS.

# endservent

> Closes the network services database file.

## Format

> #include <netdb.h>

> void endservent (void);

## Description

> The `endservent` routine closes the network services database file, previously opened with the `getservent` , `getservbyname` , or `getservbyport` routine.

> See also `getservent` , `getservbyname` , and `getservbyport` in this section.

## Errors

> | If the `endservent` routine does not exist in your TCP/IP library, then `errno` is set to ENOSYS.

# gethostaddr

> Returns the standard host address for the processor.

## Format

> #include <socket.h>

> int gethostaddr (char *addr);

## Arguments

> ### addr

> A pointer to the buffer in which the standard host address for the current processor is returned.

## Description

> This system call returns the standard host address for the current processor. The returned address is null-terminated. The addr parameter must point to at least 16 bytes of free space.

> Host addresses are limited to 16 characters.

## Return Values

> 0 | Indicates success.
> --1 | Indicates that an error has occurred and is further specified in the global `errno` .

# gethostbyaddr

> Searches the host database sequentially from the beginning of the database for a host record with a given address.

## Format

> #include <netdb.h>

> struct hostent *gethostbyaddr (char *addr, int len, int type);

Routine Variants This socket routine has a variant named `__bsd44_gethostbyaddr` . Enabled by defining `_SOCKADDR_LEN` , this variant implements 4.4BSD-compatible semantics. See Section A.7 for more information.

## Arguments

> ### addr

> A pointer to a series of bytes in network order specifying the address of the host sought. This argument does not point to an ASCII string.

> ### len

> The number of bytes in the address pointed to by the addr argument.

> ### type

> The type of address format being sought. Currently, only AF_INET (defined in `<socket.h>` ) is supported.)

## Description

> This routine finds the first host record in the host database with the given address.

> The `gethostbyaddr` routine uses a common static area for its return values. This means that subsequent calls this routine will overwrite any existing host entry. You must make a copy of the host entry if you wish to save it.

## Return Values

> NULL | Indicates an error.
> x | A pointer to an object having the `hostent` structure. See `<netdb.h>` for a description of the `hostent` structure. Depending on the error condition and the socket implementation selected, `errno` or `h_errno` might be set to further indicate the error. (See sections A.5 and A.6.)

# gethostbyname

> Searches the host database sequentially from the beginning of the database for a host record with a given name or alias.

## Format

> #include <netdb.h>

> struct hostent *gethostbyname (char *name);

Routine Variants This socket routine has a variant named `__bsd44_gethostbyname` . Enabled by defining `_SOCKADDR_LEN` , this variant implements 4.4BSD-compatible semantics. See Section A.7 for more information.

## Argument

> ### name

> A pointer to a null-terminated character string containing the name or an alias of the host sought.

## Description

> This routine finds the first host in the host database with the given name or alias.

> The `gethostbyname` routine uses a common static area for its return values. This means that subsequent calls to this routine will overwrite any existing host entry. You must make a copy of the host entry if you wish to save it.

## Return Values

> NULL | Indicates an error.
> x | A pointer to an object having the `hostent` structure. See `<netdb.h>` for a description of the `hostent` structure. Depending on the error condition and the socket implementation selected, `errno` or `h_errno` might be set to further indicate the error. (See sections A.5 and A.6.)

# gethostent

> Gets a host file entry from the network host database file.

## Format

> #include <netdb.h>

> struct hostent *gethostent (void);

## Description

> The `gethostent` routine reads the next entry of the database, opening a connection to the database, if necessary.

> See the `<netdb.h>` header file for a description of the `hostent` structure.

> This routine uses a common static area for its return values. Therefore, subsequent calls to this routine overwrite any existing network entry. You must make a copy of the network services entry, if you wish to save it.

## Return Values

> x | A pointer to the `hostent` structure.
> NULL | Indicates an error.

# gethostname

> Returns the name currently associated to the host.

## Format

> #include <socket.h>

> int gethostname (char *name, int namelen);

> (_DECC_V4_SOURCE) int gethostname (char *name, size_t namelen);

> (NOT _DECC_V4_SOURCE)

## Arguments

> ### name

> The address of a buffer into which the name should be written. The returned name is null-terminated unless sufficient space is not provided.

> ### namelen

> The size of the buffer pointed to by name.

## Description

> This routine returns the hostname maintained by the TCP/IP Services for OpenVMS or compatible TCP/IP product.

## Return Values

> 0 | Indicates success.
> --1 | Indicates an error; `errno` is set to one of the following: EFAULT -- The buffer decribed by name and namelen is not a valid, writable part of the user address space. EINVAL -- The returned name is an invalid address.

# getnetbyaddr

> Searches the network database sequentially from the beginning of the database for a network record with a given address.

## Format

> #include <netdb.h>

> struct netent *getnetbyaddr (long net, int type);

## Arguments

> ### net

> The network number, in host byte order, of the network database entry required.

> ### type

> The type of network sought. Currently, only AF_INET (defined in `<socket.h>` ) is supported.)

## Description

> This routine finds the first network record in the network database with the given address.

> The `getnetent` , `getnetbyaddr` , and `getnetbyname` routines all use a common static area for their return values. This means that subsequent calls to any of these routines will overwrite any existing network entry. You must make a copy of the network entry if you wish to save it.

## Return Values

> NULL | Indicates EOF or an error.
> x | A pointer to an object having the `netent` structure. See the `<netdb.h>` header file for a description of the `netent` structure.

# getnetbyname

> Searches the network database sequentially from the beginning of the database for a network record with a given name or alias.

## Format

> #include <netdb.h>

> struct netent *getnetbyname (char *name);

## Argument

> ### name

> A pointer to a null-terminated character string of the name or an alias of the network sought.

## Description

> This routine finds the first host in the network database with the given name or alias.

> The `getnetent` , `getnetbyaddr` , and `getnetbyname` routines all use a common static area for their return values. This means that subsequent calls to any of these routines will overwrite any existing network entry. You must make a copy of the network entry if you wish to save it.

## Return Values

> NULL | Indicates EOF or an error; `errno` is set to EFAULT (The buffer described by name is not a valid, writable part of the user address space.)
> x | A pointer to an object having the `netent` structure. See the `<netdb.h>` header file for a description of the `netent` structure. Depending on the error condition and the socket implementation selected, `errno` or `h_errno` might be set to further indicate the error. (See sections A.5 and A.6.)

# getnetent

> Gets a network file entry from the networks database file.

## Format

> #include <netdb.h>

> struct netent *getnetnet (void);

## Description

> The `getnetent` routine opens and sequentially reads the networks database file to retrieve network information.

> See the `<netdb.h>` header file for a description of the `netent` structure.

> The `getnetent` routine uses a common static area for its return values, so subsequent calls to this routine overwrite any existing network entry. You must make a copy of the network services entry, if you wish to save it.

> See also `setnetent` , and `endnetent` in this section.

## Return Values

> x | A pointer to a `netent` structure.
> 0 | Indicates an error or EOF.

# getpeername

> Returns the name of the connected peer.

## Format

> #include <socket.h>

> int getpeername (int s, struct sockaddr *name, int *namelen);

> (_DECC_V4_SOURCE) int getpeername (int s, struct sockaddr *name, size_t *namelen);

> (NOT _DECC_V4_SOURCE)

Routine Variants This socket routine has a variant named `__bsd44_getpeername` . 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 using `socket` .

> ### name

> A pointer to a buffer within which the peer name is to be returned.

> ### namelen

> An address of an integer that specifies the size of the name buffer. On return, it will be modified to reflect the actual length, in bytes, of the name returned.

## Description

> This routine returns the name of the peer connected to the socket descriptor specified.

> See also `bind` , `getsockname` , and `socket` in this appendix.

## Return Values

> 0 | Indicates success.
> --1 | Indicates an error; `errno` is set to one of the following: EBADF -- The descriptor is invalid. ENOTSOCK -- The socket descriptor references a file, not a socket. ENOTCONN -- The socket is not connected. ENOBUFS -- Resources were insufficient in the system to perform the operation. EFAULT -- The name parameter is not a valid part of the user address space.

Previous | Next | Contents | Index

privacy and legal statement