Documentation Archive Developer
ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages


This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).

CONNECT(2)                  BSD System Calls Manual                 CONNECT(2)

     connect -- initiate a connection on a socket

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

     connect(int socket, const struct sockaddr *address,
         socklen_t address_len);

     The parameter socket 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 address, which is an address in the com-munications communications
     munications space of the socket.

     Each communications space interprets the address parameter in its own
     way.  Generally, stream sockets may successfully connect() only once;
     datagram sockets may use connect() multiple times to change their associ-ation. association.
     ation.  Datagram sockets may dissolve the association by connecting to an
     invalid address, such as a null address or an address with the address
     family set to AF_UNSPEC (the error EAFNOSUPPORT will be harmlessly

     Upon successful completion, a value of 0 is returned.  Otherwise, a value
     of -1 is returned and the global integer variable errno is set to indi-cate indicate
     cate the error.

     The connect() system call will fail if:

     [EACCES]           The destination address is a broadcast address and the
                        socket option SO_BROADCAST is not set.

     [EADDRINUSE]       The address is already in use.

     [EADDRNOTAVAIL]    The specified address is not available on this

     [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]            socket is not a valid descriptor.

     [ECONNREFUSED]     The attempt to connect was ignored (because the target
                        is not listening for connections) or explicitly

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

     [EHOSTUNREACH]     The target host cannot be reached (e.g., down, discon-nected). disconnected).

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

     [EINTR]            Its execution was interrupted by a signal.

     [EINVAL]           An invalid argument was detected (e.g., address_len is
                        not valid for the address family, the specified
                        address family is invalid).

     [EISCONN]          The socket is already connected.

     [ENETDOWN]         The local network interface is not functioning.

     [ENETUNREACH]      The network isn't reachable from this host.

     [ENOBUFS]          The system call was unable to allocate a needed memory

     [ENOTSOCK]         socket is not a file descriptor for a socket.

     [EOPNOTSUPP]       Because socket is listening, no connection is allowed.

     [EPROTOTYPE]       address has a different type than the socket that is
                        bound to the specified peer address.

     [ETIMEDOUT]        Connection establishment timed out without establish-ing establishing
                        ing 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 component of the
                        path prefix.

     [EACCES]           Write access to the named socket is denied.

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

     [ELOOP]            Too many symbolic links were encountered in translat-ing translating
                        ing the pathname.  This is taken to be indicative of a
                        looping symbolic link.

     [ENAMETOOLONG]     A component of a pathname exceeded {NAME_MAX} charac-ters, characters,
                        ters, or an entire path name exceeded {PATH_MAX} char-acters. characters.

     [ENOENT]           The named socket does not exist.

     [ENOTDIR]          A component of the path prefix is not a directory.

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

     The include file <sys/types.h> is necessary.

     accept(2), getsockname(2), select(2), socket(2), compat(5)

     The connect() function call appeared in 4.2BSD.

4.2 Berkeley Distribution        June 4, 1993        4.2 Berkeley Distribution