connect()

NAME

connect() - initiate a connection on a socket

SYNOPSIS

#include <sys/types.h>
#include <sys/socket.h>

int connect (int s, const struct sockaddr *addr, int addrlen)

DESCRIPTION

The parameter s is a socket.

The other socket is specified by addr, which is an address in the communications space of the socket. Each communications space interprets the addr parameter in its own way. Generally, stream sockets may successfully connect(2) only once; datagram sockets may use connect(2) multiple times to change their association. Datagram sockets may dissolve the association by connecting to an invalid address, such as a null address.

RETURN VALUES

If the connection or binding succeeds, 0 is returned. Otherwise a -1 is returned, and a more specific error code is stored in errno

ERRORS

The connect(2) call fails if:

[EADDRINUSE]
The address is already in use.
[EADDRNOTAVAIL]

The specified address is not available on this machine.
[EAFNOSUPPORT]
Addresses in the specified address family cannot be used with this socket.
[EALREADY]
The socket is non-blocking and a previous connection attempt has not yet been completed.
[EBADF]
S is not a valid descriptor.
[ECONNREFUSED]
The attempt to connect was forcefully rejected.
[EFAULT]
The addr parameter specifies an area outside the process address space.
[EINPROGRESS]
The socket is non-blocking and the connection cannot be completed immediately. It is possible to select(2) for completion by selecting the socket for writing.
[EISCONN]
The socket is already connected.
[ENETUNREACH]
The network isn't reachable from this host.
[ENOTSOCK]
S is a descriptor for a file, not a socket.
[ETIMEDOUT]
Connection establishment timed out without establishing a connection.

The following errors are specific to sockets using the AF_LOCAL protocol family (previously known as AF_UNIX).

[EACCES]
Search permission is denied for a component of the path prefix.
[EACCES]
Write access to the named socket is denied.
[EINVAL]
The pathname contains a character with the high-order bit set, or the call was applied against a device that doesn't support sockets.
[ELOOP]
Too many symbolic links were encountered in translating the pathname.
[ENAMETOOLONG]
A component of a pathname exceeded {NAME_MAX} characters, or an entire path name exceeded {PATH_MAX} characters.
[ENOENT]
The named socket does not exist.
[ENOTDIR]
A component of the path prefix is not a directory.

SEE ALSO

accept(2)

select(2)

socket(2)

getsockname(2)