connect - inicia una conexión en un conector (socket)
Biblioteca Estándar C (
libc,
-lc)
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
The
connect() system call connects the socket referred to by the file
descriptor
sockfd to the address specified by
addr. The
addrlen argument specifies the size of
addr. The format of the
address in
addr is determined by the address space of the socket
sockfd; see
socket(2) for further details.
If the socket
sockfd is of type
SOCK_DGRAM, then
addr is
the address to which datagrams are sent by default, and the only address from
which datagrams are received. If the socket is of type
SOCK_STREAM or
SOCK_SEQPACKET, this call attempts to make a connection to the socket
that is bound to the address specified by
addr.
Some protocol sockets (e.g., UNIX domain stream sockets) may successfully
connect() only once.
Some protocol sockets (e.g., datagram sockets in the UNIX and Internet domains)
may use
connect() multiple times to change their association.
Some protocol sockets (e.g., TCP sockets as well as datagram sockets in the UNIX
and Internet domains) may dissolve the association by connecting to an address
with the
sa_family member of
sockaddr set to
AF_UNSPEC;
thereafter, the socket can be connected to another address. (
AF_UNSPEC
is supported since Linux 2.2.)
Si la conexión o enlace tiene éxito, se devuelve 0. En caso de
error, se devuelve -1, y se asigna a la variable
errno un valor
apropiado.
Los siguientes sólo son errores generales de conector. Puede haber otros
códigos de error específicos del dominio.
- EACCES
- For UNIX domain sockets, which are identified by pathname:
Write permission is denied on the socket file, or search permission is
denied for one of the directories in the path prefix. (See also
path_resolution(7).)
-
EACCES, EPERM
- El usuario ha intentado conectarse a una dirección
de difusión (broadcast) sin que el conector tenga activa la
opción de difusión, o la petición de conexión
ha fallado debido a una regla del cortafuegos local.
- EACCES
- It can also be returned if an SELinux policy denied a
connection (for example, if there is a policy saying that an HTTP proxy
can only connect to ports associated with HTTP servers, and the proxy
tries to connect to a different port).
- EADDRINUSE
- La dirección local ya está en uso.
- EADDRNOTAVAIL
- (Internet domain sockets) The socket referred to by
sockfd had not previously been bound to an address and, upon
attempting to bind it to an ephemeral port, it was determined that all
port numbers in the ephemeral port range are currently in use. See the
discussion of /proc/sys/net/ipv4/ip_local_port_range in
ip(7).
- EAFNOSUPPORT
- La dirección pasada no tiene la familia de
direcciones correcta en su campo sa_family.
- EAGAIN
- For nonblocking UNIX domain sockets, the socket is
nonblocking, and the connection cannot be completed immediately. For other
socket families, there are insufficient entries in the routing cache.
- EALREADY
- El conector es no bloqueante y todavía no se ha
terminado un intento de conexión anterior.
- EBADF
-
sockfd no es descriptor válido de archivos
abiertos.
- ECONNREFUSED
- Un connect() en un conector de flujo, no ha
econtrado a nadie a la esucha en la dirección remota.
- EFAULT
- La estructura de dirección del conector está
fuera del espacio de direcciones del usuario.
- EINPROGRESS
- The socket is nonblocking and the connection cannot be
completed immediately. (UNIX domain sockets failed with EAGAIN
instead.) It is possible to select(2) or poll(2) for
completion by selecting the socket for writing. After select(2)
indicates writability, use getsockopt(2) to read the
SO_ERROR option at level SOL_SOCKET to determine whether
connect() completed successfully ( SO_ERROR is zero) or
unsuccessfully ( SO_ERROR is one of the usual error codes listed
here, explaining the reason for the failure).
- EINTR
- La señal atrapada ha interrumpido la llamada del
sistema; consulte signal(7).
- EISCONN
- El conector ya está conectado.
- ENETUNREACH
- Red inaccesible.
- ENOTSOCK
- El descriptor de archivo sockfd no se refiere a un
conector.
- EPROTOTYPE
- The socket type does not support the requested
communications protocol. This error can occur, for example, on an attempt
to connect a UNIX domain datagram socket to a stream socket.
- ETIMEDOUT
- Finalizó el plazo de tiempo mientras se intentaba la
conexión. El servidor puede estar demasiado ocupado para aceptar
nuevas conexiones. Dese cuenta que para conectores IP el plazo de tiempo
puede ser muy largo cuando se han habilitado los "syncookies" en
el servidor.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD, (connect
() hizo su primera
aparición en la versión 4.2BSD).
Tiene más información acerca del tipo
socklen_t en
accept(2).
If
connect() fails, consider the state of the socket as unspecified.
Portable applications should close the socket and create a new one for
reconnecting.
En
getaddrinfo(3) tiene un ejemplo del uso de
connect().
accept(2),
bind(2),
getsockname(2),
listen(2),
socket(2),
path_resolution(7),
selinux(8)
La traducción al español de esta página del manual fue
creada por Miguel Angel Sepulveda <
[email protected]>, Cesar
D. Lobejon <
[email protected]>, Juan Piernas
<
[email protected]> y Marcos Fouces <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]