CONNECT(2) | System Calls Manual | CONNECT(2) |
connect
— initiate
a connection on a socket
#include
<sys/socket.h>
int
connect
(int
s, const struct sockaddr
*name, socklen_t
namelen);
The parameter s is a socket. If it is of
type SOCK_DGRAM
, this call specifies the peer with
which the socket is to be associated; this address is that to which
datagrams are to be sent, and the only address from which datagrams are to
be received. If the socket is of type SOCK_STREAM
,
this call attempts to make a connection to another socket. The other socket
is specified by name, which is an address in the
communications space of the socket. namelen indicates
the amount of space pointed to by name, in bytes. Each
communications space interprets the name parameter in
its own way. Generally, stream sockets may use
connect
()
only once; datagram sockets may use connect
()
multiple times to change their association. Datagram sockets may dissolve
the association by connecting to an invalid address, such as a null
address.
If the connection or binding succeeds, 0 is returned. Otherwise a -1 is returned, and a more specific error code is stored in errno.
The connect
() call fails if:
EBADF
]ENOTSOCK
]EADDRNOTAVAIL
]EAFNOSUPPORT
]EISCONN
]ETIMEDOUT
]EINVAL
]ECONNREFUSED
]EHOSTUNREACH
]EINTR
]ENETUNREACH
]EADDRINUSE
]EFAULT
]EINPROGRESS
]SO_ERROR
to check for error conditions.EALREADY
]The following errors are specific to connecting names in the UNIX-domain. These errors may not apply in future versions of the UNIX IPC domain.
ENOTDIR
]ENAMETOOLONG
]{NAME_MAX}
characters, or an entire path name exceeded
{PATH_MAX}
characters.ENOENT
]EACCES
]EACCES
]ELOOP
]EPROTOTYPE
]SOCK_STREAM
whereas name may
refer to a socket of type SOCK_DGRAM
.accept(2), getsockname(2), getsockopt(2), poll(2), select(2), socket(2)
The connect
() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
The connect
() system call first appeared
in 4.1cBSD.
July 17, 2013 | OpenBSD-5.6 |