connect(3N) connect(3N)
NAME
connect - initiate a connection on a socket
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int connect(int s, const struct sockaddr *name, int namelen);
DESCRIPTION
The parameter s indicates a socket. If it is a socket of type
SOCKDGRAM, the function specifies the address of the communication
partner with which the socket is to be associated; this address is the
address to which datagrams are to be sent if a receiver is not expli-
citly designated; it is the only address from which datagrams are to
be received. If the socket s is of type SOCKSTREAM, connect()
attempts to make a connection to another socket. name is one of the
addresses in the address family of the socket. Each address family
interprets the name parameter in its own way. If s is not bound, then
it will be bound to an address selected by the underlying transport
provider. Generally, stream sockets may successfully connect() only
once; datagram sockets may use connect() multiple times to change
their association. Datagram sockets may dissolve the association by
connecting to a null address.
RETURN VALUE
If the connection or binding succeeds, then 0 is returned. Otherwise a
-1 is returned and a more specific error code is stored in errno.
DIAGNOSTICS
The call fails if:
EBADF s is not a valid descriptor.
ENOTSOCK s is a descriptor for a file, not a socket.
EINVAL namelen is not the size of a valid address for the
specified address family.
EADDRNOTAVAIL The specified address is not available on the remote
machine.
EAFNOSUPPORT Addresses in the specified address family cannot be
used with this socket.
EISCONN The socket is already connected.
ETIMEDOUT Connection establishment timed out without establishing
a connection.
Page 1 Reliant UNIX 5.44 Printed 11/98
connect(3N) connect(3N)
ECONNREFUSED The attempt to connect was forcefully rejected. The
calling program should close(2) the socket descriptor,
and issue another socket(3N) call to obtain a new
descriptor before attempting another connect() call.
ENETUNREACH The network is not reachable from this host.
EADDRINUSE The address is already in use.
EINPROGRESS The socket is non-blocking and the connection cannot be
completed immediately. select(3C) can be used to query
an incoming write event for this socket; in this way it
is possible to find out when a connection has been set
up. However, this is only possible if the socket
STREAMS module is the topmost module on the protocol
stack with a write service procedure. This will nor-
mally be the case.
EALREADY The socket is non-blocking and a previous connection
attempt has not yet been completed.
EINTR The connection attempt was interrupted by the delivery
of a signal.
EPROTOTYPE The protocol has the wrong type for the socket name.
ENOSR There were insufficient STREAMS resources available to
complete the operation.
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 A component of the path prefix of the pathname in name
is not a directory.
ENOENT A component of the path prefix of the pathname in name
does not exist.
ENOENT The socket referred to by the pathname in name does not
exist.
EACCES Search permission is denied for a component of the path
prefix of the pathname in name.
ELOOP Too many symbolic links were encountered in translating
the pathname in name.
EIO An I/O error occurred while reading from or writing to
the file system.
Page 2 Reliant UNIX 5.44 Printed 11/98
connect(3N) connect(3N)
SEE ALSO
select(3C), accept(3N), getsockname(3N), socket(3N).
Page 3 Reliant UNIX 5.44 Printed 11/98