bionic (2) connect.2.gz

Provided by: manpages-es_1.55-10_all bug

NOMBRE

       connect - inicia una conexión en un conector (socket)

SINOPSIS

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

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

DESCRIPCIÓN

       El  descriptor  de  fichero sockfd debe referenciar a un conector.  Si el conector es del tipo SOCK_DGRAM
       entonces la dirección serv_addr es la dirección a la que por defecto se envían los datagramas y la  única
       dirección  de la que se reciben datagramas. Si el conector es del tipo SOCK_STREAM o SOCK_SEQPACKET, esta
       llamada intenta hacer una conexión a otro conector. El otro conector está especificado por serv_addr,  la
       cual  es  una dirección (de longitud addrlen) en el espacio de comunicaciones del conector.  Cada espacio
       de comunicaciones interpreta el parámetro serv_addr a su manera.

       Generalmente, los conectores de protocolos orientados a conexión pueden  conectarse  con  éxito  mediante
       connect  una  vez  solamente;  los  conectores de protocolos no orientados a conexión pueden usar connect
       múltiples veces para cambiar sus asociaciones. Los conectores de  protocolos  no  orientados  a  conexión
       pueden  disolver la asociación conectandose a una dirección en la que al miembro sa_family de sockaddr se
       le ha asignado el valor AF_UNSPEC.

VALOR DEVUELTO

       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.

ERRORES

       Los  siguientes  sólo  son errores generales de conector.  Puede haber otros códigos de error específicos
       del dominio.

       EBADF  El descriptor del fichero no es un índice válido de la tabla de descriptores.

       EFAULT La estructura de dirección del conector está fuera del espacio de direcciones del usuario.

       ENOTSOCK
              El descriptor del fichero no está asociado con un conector.

       EISCONN
              El conector ya está conectado.

       ECONNREFUSED
              No hay nadie escuchando en la dirección remota.

       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.

       ENETUNREACH
              Red inaccesible.

       EADDRINUSE
              La dirección local ya está en uso.

       EINPROGRESS
              El conector es no bloqueante y la conexión no puede completarse inmediatamente.  Es  posible  usar
              select(2)  o poll(2) para completarla seleccionando el conector para escritura. Después que select
              indique que la escritura es posible, use getsockopt(2) para  leer  la  opción  SO_ERROR  al  nivel
              SOL_SOCKET  para  determinar  si  connect  se completó con éxito (BSO_ERROR será cero) o sin éxito
              (BSO_ERROR será uno de los códigos de error usuales listados aquí, explicando la razón del fallo).

       EALREADY
              El conector es no bloqueante y todavía no se ha terminado un intento de conexión anterior.

       EAGAIN No hay más puertos locales libres o las entradas en la cache de  enrutamiento  son  insuficientes.
              Para  PF_INET  vea  la  sysctl  net.ipv4.ip_local_port_range en ip(7) para ver cómo incrementar el
              número de puertos locales.

       EAFNOSUPPORT
              La dirección pasada no tiene la familia de direcciones correcta en su campo sa_family.

       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.

CONFORME A

       SVr4, 4.4BSD (la función connect apareció por primera vez en BSD 4.2).  SVr4 documenta adicionalmente los
       códigos  de  error  generales  EADDRNOTAVAIL,  EINVAL, EAFNOSUPPORT, EALREADY, EINTR, EPROTOTYPE y ENOSR.
       También documenta muchas condiciones de error adicionales que no se describen aquí.

NOTA

       El tercer argumento de connect es en realidad un entero (y esto es lo que tienen BSD 4.*, libc4 y libc5).
       Cierta  confusión  en  POSIX dio como resultado el actual socklen_t.  El estándar propuesto todavía no ha
       sido adoptado pero glibc2 ya lo sigue y también tiene socklen_t. Vea también accept(2).

FALLOS (BUGS)

       Desconectar un conector llamando a connect con una dirección AF_UNSPEC no se ha implementado todavía.

VÉASE TAMBIÉN

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