CONNECT(2)                SYSTEM CALLS                 CONNECT(2)

NAME
     connect - initiate a connection on a socket

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

     int connect(s, name, namelen)
     int s;
     struct sockaddr *name;
     int namelen;

DESCRIPTION
     The parameter s is a socket.  If it is of  type  SOCK_DGRAM,
     then  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 it is of type SOCK_STREAM, then 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.  Each communications
     space interprets the name parameter in its  own  way.   Gen-
     erally, stream sockets may successfully connect() only once;
     datagram sockets may use connect() multiple times to  change
     their  association.  Datagram sockets may dissolve the asso-
     ciation by connecting to an invalid address, such as a  null
     address.

RETURN VALUES
     connect() returns:

     0    on success.

     -1   on failure and sets errno to indicate the error.

ERRORS
     The call fails if:

     EADDRINUSE          The address is already in use.

     EADDRNOTAVAIL       The specified address is  not  available
                         on the remote machine.

     EAFNOSUPPORT        Addresses in the specified address  fam-
                         ily cannot be used with this socket.

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

     EBADF               s is not a valid descriptor.

     ECONNREFUSED        The attempt to  connect  was  forcefully
                         rejected.   The  calling  program should
                         close(2V)  the  socket  descriptor,  and
                         issue another socket(2) call to obtain a
                         new descriptor before attempting another
                         connect(2) call.

     EFAULT              The name  parameter  specifies  an  area
                         outside the process address space.

     EINPROGRESS         The socket is non-blocking and the  con-
                         nection cannot be completed immediately.
                         It is possible to select(2) for  comple-
                         tion  by  selecting the socket for writ-
                         ing.

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

     EINVAL              namelen is  not  the  size  of  a  valid
                         address  for  the specified address fam-
                         ily.

     EISCONN             The socket is already connected.

     ENETUNREACH         The network is not 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 connecting names in the
     UNIX  domain.  These errors may not apply in future versions
     of the UNIX IPC domain.

     EACCES              Search permission is denied for  a  com-
                         ponent  of  the  path prefix of the path
                         name in name.

     ELOOP               Too many symbolic links were encountered
                         in translating the path name in name.

     EIO                 An I/O error occurred while reading from
                         or writing to the file system.

     ENAMETOOLONG        The length of the path argument  exceeds
                         {PATH_MAX}.

                         A  pathname  component  is  longer  than
                         {NAME_MAX}   (see   sysconf(2V))   while
                         {_POSIX_NO_TRUNC}  is  in  effect   (see
                         pathconf(2V)).

     ENOENT              A component of the path  prefix  of  the
                         path name in nam_e does not exist.

                         The socket referred to by the path  name
                         in name does not exist.

     ENOTDIR             A component of the path  prefix  of  the
                         path name in name is not a directory.

     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  the  type of s
                         (e.g., s is a SOCK_DGRAM  socket,  while
                         name refers to a SOCK_STREAM socket).

SEE ALSO
     accept(2), close(2V), connect(2), getsockname(2), select(2),
     socket(2)


