connect(3N)

connect - initiate a connection on a socket

As shipped in IRIX 6.5.5. Unchanged since IRIX 6.5.

NAME
     connect - initiate a connection on a socket

SYNOPSIS
     #include <sys/types.h>

     connect(int s, caddr_t name, int namelen);

DESCRIPTION
     The parameter s is a socket.  If it is of type SOCK_DGRAM, connect()
     specifies the peer 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 explicitly designated; it is the only address from which datagrams
     are to be received.  If the socket s is of type SOCK_STREAM, connect()
     attempts to make a connection to another socket.  The other socket is
     specified by name.  name is an address in the communications space of the
     socket.  Each communications space 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.

ERRORS
     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.

     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.  It is possible to
                         select(3N) for completion by selecting the socket for
                         writing.  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 be the normal case.

     EALREADY            The socket is non-blocking and a previous connection
                         attempt has not yet been completed.

     EINTR               The connection attempt was interrupted before any
                         data arrived by the delivery of a signal.

     ENOTSOCK            The file referred to by name is not a socket.

     EPROTOTYPE          The file referred to by name is a socket of a type
                         other than type s (for example, s is a SOCK_DGRAM
                         socket, while name refers to a SOCK_STREAM socket).

     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.

SEE ALSO
     accept(3N), connect(3N), getsockname(3N), socket(3N)

NOTES
     The type of address structure passed to connect() depends on the address
     family.  UNIX domain sockets (address family AF_UNIX) require a struct
     socketaddr_un as defined in sys/un.h; Internet domain sockets (address
     family AF_INET) require a struct sockaddr_in as defined in netinet/in.h.
     Other address families may require other structures.  Use the structure
     appropriate to the address family; cast the structure address to a
     generic caddr_t in the call to connect() and pass the size of the
     structure in the length argument.