connect - Connect two sockets
const struct sockaddr *address,
socklen_t address_len );
[XNS4.0] The definition of the connect() function in
XNS4.0 uses a size_t data type instead of a socklen_t data
type as specified in XNS5.0 (the previous definition).
[Tru64 UNIX] 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(
struct sockaddr *address,
int address_len );
Interfaces documented on this reference page conform to
industry standards as follows:
connect(): XNS4.0, XNS5.0
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
Specifies a file descriptor for the socket. 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,
sockaddr_un, sockaddr_in6, or sockaddr_storage structure,
depending on which of the supported address families is
[Tru64 UNIX] 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
If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr
structure is defined with the name osockaddr.
Specifies the length of the sockaddr structure
pointed to by the address parameter.
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. If address is a null address
for the protocol, the socket's peer address is reset.
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
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.
If the connection cannot be established immediately, one
of the following occurs: If the socket file descriptor is
marked non-blocking, the connect() function fails and sets
errno to [EINPROGRESS]. However, the connection request
is not aborted; the connection will be established asynchronously.
If you make a call to connect() for the same
socket before the connection is established, the function
fails and sets errno to [EALREADY]. If the socket file
descriptor is marked blocking, the connect() function
blocks for an unspecified amount of time until the connection
is established. If the timeout interval expires
before the connection is established, the function fails
and aborts the connection attempt. While blocked, if connect()
is interrupted by a signal, it fails and sets errno
to [EINTR]. However, the connection request is not
aborted; the connection is established asynchronously.
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.
If the connect() function fails, errno may be set to one
of the following values: Search permission is denied for a
component of the path prefix; or write access to the named
socket is denied.
[XNS4.0] This error applies to AF_UNIX sockets
only. The specified address is already in use.
The specified address is not available from the
local machine. The addresses in the specified
address family cannot be used with this socket. A
connection request is already in progress for the
specified socket. The socket parameter is not
valid. The attempt to connect was rejected. The
remote host reset the connection request. The
address parameter is not in a readable part of the
user address space. The specified host is not
reachable. O_NONBLOCK is set for the file descriptor
for the socket and the connection cannot be
immediately established; the connection will be
established asynchronously. The connect() function
was interrupted by a signal while waiting for the
connection to be established. The connection establishment
may continue asynchronously. 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.
For an AF_UNIX socket, an I/O error occurred
while reading from or writing to the file system.
The socket is already connected. For an AF_UNIX
socket, too many symbolic links were encountered in
translating the pathname in address. A component
of the pathname exceeded NAME_MAX characters, or an
entire pathname exceeded PATH_MAX characters. The
local network connection is not operational. No
route to the network or host is present. Insufficient
resources are available in the system to complete
the call. For an AF_UNIX socket, a component
of the pathname does not name an existing file or
the pathname is an empty string. The available
STREAMS resources were insufficient for the operation
to complete. For an AF_UNIX socket, a component
of the path prefix of the pathname in address
is not a directory. The socket parameter refers to
a file, not a socket. The socket is listening and
cannot be connected. The specified address has a
different type than the socket bound to the specified
peer address. The establishment of a connection
timed out before a connection was made.
[Tru64 UNIX] 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.
Functions: accept(2), bind(2), socket(2), getsockname(2),
Network Programmer's Guide
[ Back ]