HP 3000 Manuals

CONNECT [ Berkeley Sockets/iX Reference Manual ] MPE/iX 5.0 Documentation


Berkeley Sockets/iX Reference Manual

CONNECT 

C Interface 

     AF_UNIX sockets only:

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

          connect(s, addr, addrlen)
          int s;
          struct sockaddr_un *addr;
          int addrlen;

     AF_INET sockets only:

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

          connect(s, addr, addrlen)
          int s;
          struct sockaddr_in *addr;
          int addrlen;

Description 

The parameter s is a socket descriptor.  The addr parameter is a pointer
to a socket address structure.  This structure contains the address of a
remote socket to which a connection is established.  The addrlen 
parameter specifies the size of this address structure.  Since the size
of the socket address structure varies between socket address families
(16 bytes for AF_INET; 110 bytes for AF_UNIX), the correct socket address
structure should be used with each address family (struct sockaddr_in for
AF_INET, struct sockaddr_un for AF_UNIX).

If the socket is of type SOCK_STREAM, then connect attempts to contact
the remote host in order to make a connection between the remote socket
(peer) and the local socket specified by s.  The call normally blocks
until the connection completes.  If non-blocking mode has been enabled
using the O_NONBLOCK or O_NDELAY fcntl flags and the connection cannot be
completed immediately, then connect returns an error as described below.
In these cases, the select call can be used on this socket to determine
when the connection has completed by selecting it for writing.

The O_NONBLOCK and O_NDELAY flags are defined in <fcntl.h> and are
explained in the fcntl section.  If s is a SOCK_STREAM socket that is
bound to the same local address as another SOCK_STREAM socket and addr is
the same as the peer address of the other socket, connect returns
EADDRINUSE.

If the AF_INET socket does not already have a local address bound to it
(refer to the bind call), the connect call also binds the socket to a
local address chosen by the system.

Stream sockets may successfully connect only once.

Return Value 

If the call is successful, a 0 is returned.  If it fails, a -1 is
returned, and an error code is stored in errno.

Errors 

The following errors are returned by connect:

[EBADF]             The argument s is not a valid file descriptor.

[ENOTSOCK]          The argument s is a file descriptor for a file, not a
                    socket.

[EADDRNOTAVAIL]     The specified address is not available on this
                    machine, or the socket is a tcp or udp socket and the
                    zero port number is specified.

[EAFNOSUPPORT]      Addresses in the specified address family cannot be
                    used with this socket.

                    For datagram sockets, the peer address is no longer
                    maintained by the system.

[EISCONN]           The socket is already connected.

[EINVAL]            The socket has already been shut down or has a listen
                    active on it, or addrlen is a bad value.

[ETIMEDOUT]         Connection establishment timed out without
                    establishing a connection.  The backlog parameter may
                    be full.  (Refer to the listen call.)

[ECONNREFUSED]      The attempt to connect was forcefully rejected.

[ENETUNREACH]       The network is not reachable from this host.

[EADDRINUSE]        The address is already in use.

[EFAULT]            The addr parameter is not a valid pointer.

[EINPROGRESS]       Non-blocking I/O is enabled using O_NONBLOCK or
                    O_NDELAY, and the connection cannot be completed
                    immediately.  This is not a failure.

[ENOSPC]            All available virtual circuits are in use.

[EOPNOTSUPP]        A connect attempt was made on a socket type that does
                    not support this call.

[EINTR]             The call was interrupted by a signal before a valid
                    connection arrived.

MPE/iX Specific 

The connect call is not supported for SOCK_DGRAM sockets on the current
release.

Author 

UCB (University of California at Berkeley)

See Also 

accept, select, socket, getsockname, fcntl



MPE/iX 5.0 Documentation