103 lines
2.7 KiB
Groff
103 lines
2.7 KiB
Groff
'\"macro stdmacro
|
|
.\" Copyright (c) 1983 Regents of the University of California.
|
|
.\" All rights reserved. The Berkeley software License Agreement
|
|
.\" specifies the terms and conditions for redistribution.
|
|
.\"
|
|
.\" @(#)connect.2 6.6 (Berkeley) 5/22/86
|
|
.\"
|
|
.if n .pH man2.connect @(#)connect 30.3 of 2/1/86
|
|
.TH CONNECT 2
|
|
.UC 5
|
|
.SH NAME
|
|
connect \- initiate a connection on a socket
|
|
.SH SYNOPSIS
|
|
.B #include <sys/types.h>
|
|
.br
|
|
.B #include <sys/socket.h>
|
|
.sp
|
|
.B "int connect (int s, const struct sockaddr \(**name, int namelen);"
|
|
.SH DESCRIPTION
|
|
The parameter
|
|
.I 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 the socket is of type SOCK_STREAM,
|
|
then this call attempts to make a connection to
|
|
another socket.
|
|
The other socket is specified by
|
|
.I name,
|
|
which is an address in the communications space of the socket.
|
|
Each communications space interprets the
|
|
.I name
|
|
parameter in its own way.
|
|
Generally, stream sockets may successfully
|
|
.I connect
|
|
only once; datagram sockets may use
|
|
.I connect
|
|
multiple times to change their association.
|
|
Datagram sockets may dissolve the association
|
|
by connecting to an invalid address, such as a zero-filled address.
|
|
.SH "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 \f2errno\fP.
|
|
.SH "ERRORS
|
|
The call fails if:
|
|
.TP 20
|
|
[EBADF]
|
|
.I S
|
|
is not a valid descriptor.
|
|
.TP 20
|
|
[ENOTSOCK]
|
|
.I S
|
|
is a descriptor for a file, not a socket.
|
|
.TP 20
|
|
[EADDRNOTAVAIL]
|
|
The specified address is not available on this machine.
|
|
.TP 20
|
|
[EAFNOSUPPORT]
|
|
Addresses in the specified address family cannot be used with this socket.
|
|
.TP 20
|
|
[EISCONN]
|
|
The socket is already connected.
|
|
.TP 20
|
|
[ETIMEDOUT]
|
|
Connection establishment timed out without establishing a connection.
|
|
.TP 20
|
|
[ECONNREFUSED]
|
|
The attempt to connect was forcefully rejected.
|
|
.TP 20
|
|
[ENETUNREACH]
|
|
The network isn't reachable from this host.
|
|
.TP 20
|
|
[EADDRINUSE]
|
|
The address is already in use.
|
|
.TP 20
|
|
[EFAULT]
|
|
The \f2name\fP parameter specifies an area outside
|
|
the process address space.
|
|
.TP 20
|
|
[EINPROGRESS]
|
|
The socket is non-blocking
|
|
and the connection cannot
|
|
be completed immediately.
|
|
It is possible to
|
|
.IR select (2)
|
|
for completion by selecting the socket for writing.
|
|
.TP 20
|
|
[EALREADY]
|
|
The socket is non-blocking
|
|
and a previous connection attempt
|
|
has not yet been completed.
|
|
.P
|
|
See also the protocol-specific manual pages for other error values.
|
|
.SH SEE ALSO
|
|
accept(2), select(2), socket(2), tcp(7P), udp(7P), unix(7F)
|
|
.SH NOTE
|
|
ABI-compliant versions of the above call can be obtained from
|
|
.IR libsocket.so .
|
|
'\".so /pubs/tools/origin.bsd
|