connect

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
CONNECT(2)		  Linux Programmer’s Manual		   CONNECT(2)



NAME
       connect - initiate a connection on a socket

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

       int  connect(int	 sockfd,  const struct sockaddr *serv_addr, socklen_t
       addrlen);

DESCRIPTION
       The file descriptor sockfd must refer to a socket.  If the  socket  is
       of  type SOCK_DGRAM then the serv_addr address is the address to which
       datagrams are sent by default, and the only address from	 which	data-
       grams are received.  If the socket is of type SOCK_STREAM or SOCK_SEQ-
       PACKET, this call attempts to make a  connection	 to  another  socket.
       The  other  socket  is specified by serv_addr, which is an address (of
       length addrlen) in the communications space of the socket.  Each	 com-
       munications space interprets the serv_addr parameter in its own way.

       Generally,  connection-based protocol sockets may successfully connect
       only once; connectionless protocol sockets may  use  connect  multiple
       times  to  change  their association.  Connectionless sockets may dis-
       solve the association by connecting to an address with  the  sa_family
       member of sockaddr set to AF_UNSPEC.

RETURN VALUE
       If the connection or binding succeeds, zero is returned.	 On error, -1
       is returned, and errno is set appropriately.

ERRORS
       The following are general socket errors	only.	There  may  be	other
       domain-specific error codes.

       EBADF  The  file descriptor is not a valid index in the descriptor ta-
	      ble.

       EFAULT The socket structure address  is	outside	 the  user’s  address
	      space.

       ENOTSOCK
	      The file descriptor is not associated with a socket.

       EISCONN
	      The socket is already connected.

       ECONNREFUSED
	      No one listening on the remote address.

       ETIMEDOUT
	      Timeout while attempting connection. The server may be too busy
	      to accept new connections. Note that for IP sockets the timeout
	      may be very long when syncookies are enabled on the server.

       ENETUNREACH
	      Network is unreachable.

       EADDRINUSE
	      Local address is already in use.

       EINPROGRESS
	      The  socket  is  non-blocking and the connection cannot be com-
	      pleted immediately.  It is possible to select(2) or poll(2) for
	      completion  by  selecting	 the socket for writing. After select
	      indicates writability, use getsockopt(2) to read	the  SO_ERROR
	      option  at  level	 SOL_SOCKET to determine whether connect com-
	      pleted  successfully  (SO_ERROR  is  zero)  or   unsuccessfully
	      (SO_ERROR is one of the usual error codes listed here, explain-
	      ing the reason for the failure).

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

       EAGAIN No more free local ports or insufficient entries in the routing
	      cache. For PF_INET see the net.ipv4.ip_local_port_range  sysctl
	      in ip(7) on how to increase the number of local ports.

       EAFNOSUPPORT
	      The  passed  address  didn’t have the correct address family in
	      its sa_family field.

       EACCES, EPERM
	      The user tried to connect to a broadcast address without having
	      the  socket  broadcast  flag  enabled or the connection request
	      failed because of a local firewall rule.

CONFORMING TO
       SVr4, 4.4BSD (the connect function first appeared in BSD	 4.2).	 SVr4
       documents  the  additional  general error codes EADDRNOTAVAIL, EINVAL,
       EAFNOSUPPORT, EALREADY, EINTR, EPROTOTYPE, and ENOSR.  It  also	docu-
       ments many additional error conditions not described here.

NOTE
       The  third  argument of connect is in reality an int (and this is what
       BSD 4.* and libc4 and libc5 have).  Some POSIX confusion	 resulted  in
       the  present  socklen_t.	 The draft standard has not been adopted yet,
       but glibc2 already  follows  it	and  also  has	socklen_t.  See	 also
       accept(2).

BUGS
       Unconnecting  a	socket by calling connect with a AF_UNSPEC address is
       not yet implemented.

SEE ALSO
       accept(2), bind(2), listen(2), socket(2), getsockname(2)



Linux 2.2			  1998-10-03			   CONNECT(2)