 |
Index for Section 2 |
|
 |
Alphabetical listing for C |
|
connect(2)
NAME
connect - Connects two sockets
SYNOPSIS
#include <sys/socket.h>
int connect (
int socket,
const struct sockaddr *address,
size_t address_len );
[POSIX] The definition of the connect() function in POSIX.1g Draft 6.6
uses a socklen_t data type instead of a size_t data type as specified in
XNS4.0 (the previous definition).
[DIGITAL] The following definition of the connect() function does not
conform to current standards and is supported only for backward
compatibility (see standards(5)):
int connect (
int socket,
struct sockaddr *address,
int address_len );
STANDARDS
Interfaces documented on this reference page conform to industry standards
as follows:
connect(): XNS4.0
The connect function also supports POSIX.1g Draft 6.6.
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
PARAMETERS
socket
Specifies a file descriptor for the socket.
address
Points to a sockaddr structure, the format of which is determined by
the domain and by the behavior requested for the socket. The sockaddr
structure is an overlay for a sockaddr_in or sockaddr_un structure,
depending on which of the supported address families is active.
[DIGITAL] If the compile-time option _SOCKADDR_LEN is defined before
the sys/socket.h header file is included, the sockaddr structure takes
4.4BSD behavior, with a field for specifying the length of the socket
address. Otherwise, the default 4.3BSD sockaddr structure is used,
with the length of the socket address assumed to be 14 bytes or less.
If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr structure is defined
with the name osockaddr.
address_len
Specifies the length of the sockaddr structure pointed to by the
address parameter.
DESCRIPTION
The connect() function requests a connection between two sockets. The
kernel sets up the communications links between the sockets; both sockets
must use the same address format and protocol.
The connect() function performs a different action for each of the
following types of initiating sockets:
· If the initiating socket is SOCK_DGRAM, the connect() function
establishes the peer address. The peer address identifies the socket
where all datagrams are sent on subsequent send() functions. It also
identifies the socket from where datagrams can be received; datagrams
from other peer addresses are not delivered.
No connections are made by this connect function.
· If the initiating socket is SOCK_STREAM, the connect() function
attempts to make a connection to the socket specified by the address
parameter. Each communication space interprets the address parameter
differently.
If the function fails for a connection mode socket, applications should use
the close() function to deallocate the socket and descriptor. If
attempting to reinitiate the connection, applications should create a new
socket.
RETURN VALUES
Upon successful completion, the connect() function returns a value of 0
(zero). Otherwise, a value of -1 is returned and errno is set to indicate
the error.
ERRORS
If the connect() function fails, errno may be set to one of the following
values:
[EACCESS] Search permission is denied for a component of the path prefix;
or write access to the named socket is denied.
[EADDRINUSE]
The specified address is already in use.
[EADDRNOTAVAIL]
The specified address is not available from the local machine.
[EAFNOSUPPORT]
The addresses in the specified address family cannot be used with
this socket.
[EALREADY]
A connection request is already in progress for the specified
socket.
[EBADF] The socket parameter is not valid.
[ECONNREFUSED]
The attempt to connect was rejected.
[EFAULT] The address parameter is not in a readable part of the user
address space.
[EHOSTUNREACH]
[POSIX] The specified host is not reachable.
[EINPROGRESS]
O_NONBLOCK is set for the file descriptor for the socket and the
connection cannot be immediately established; the connection will
be established asynchronously.
[EINTR] The connect() function was interrupted by a signal while waiting
for the connection to be established. The connection
establishment may continue asynchronously.
[EINVAL] [POSIX] The value of the address_len parameter is invalid for
the specified address family; or the sa_family field in the
socket address structure is invalid for the protocol.
[EIO] An I/O error occurred while reading from or writing to the file
system.
[EISCONN] The socket is already connected.
[ELOOP] Too many symbolic links were encountered in translating the
pathname in address.
[ENAMETOOLONG]
A component of the pathname exceeded NAME_MAX characters, or an
entire pathname exceeded PATH_MAX characters.
[ENETDOWN]
[POSIX] The local network connection is not operational.
[ENETUNREACH]
No route to the network or host is present.
[ENOBUFS] [POSIX] Insufficient resources are available in the system to
complete the call.
[ENOENT] A component of the pathname does not name an existing file or the
pathname is an empty string.
[ENOTDIR] A component of the path prefix of the pathname in address is not
a directory.
[ENOTSOCK]
The socket parameter refers to a file, not a socket.
[EPROTOTYPE]
The specified address has a different type than the socket bound
to the specified peer address.
[ETIMEDOUT]
The establishment of a connection timed out before a connection
was made.
[EWOULDBLOCK]
The socket is marked nonblocking, so the connection cannot be
immediately completed. The application program can select the
socket for writing during the connection process.
RELATED INFORMATION
Functions: accept(2), bind(2), socket(2), getsockname(2), select(2),
send(2).
Standards: standards(5).