Unix Socket - Resumen

A continuación se muestra una lista de todas las funciones relacionadas con la programación de conectores.

Funciones de puerto y servicio

Unix proporciona las siguientes funciones para obtener el nombre del servicio del archivo / etc / services.

  • struct servent *getservbyname(char *name, char *proto) - Esta llamada toma un nombre de servicio y un nombre de protocolo y devuelve el número de puerto correspondiente para ese servicio.

  • struct servent *getservbyport(int port, char *proto) - Esta llamada toma un número de puerto y un nombre de protocolo y devuelve el nombre de servicio correspondiente.

Funciones de ordenación de bytes

  • unsigned short htons (unsigned short hostshort) - Esta función convierte cantidades de 16 bits (2 bytes) del orden de bytes del host al orden de bytes de la red.

  • unsigned long htonl (unsigned long hostlong) - Esta función convierte cantidades de 32 bits (4 bytes) del orden de bytes del host al orden de bytes de la red.

  • unsigned short ntohs (unsigned short netshort) - Esta función convierte cantidades de 16 bits (2 bytes) del orden de bytes de la red al orden de bytes del host.

  • unsigned long ntohl (unsigned long netlong) - Esta función convierte cantidades de 32 bits del orden de bytes de la red al orden de bytes del host.

Funciones de dirección IP

  • int inet_aton (const char *strptr, struct in_addr *addrptr)- Esta llamada de función convierte la cadena especificada, en la notación de puntos estándar de Internet, en una dirección de red y almacena la dirección en la estructura proporcionada. La dirección convertida estará en orden de bytes de red (bytes ordenados de izquierda a derecha). Devuelve 1 si la cadena es válida y 0 en caso de error.

  • in_addr_t inet_addr (const char *strptr)- Esta llamada de función convierte la cadena especificada, en la notación de puntos estándar de Internet, en un valor entero adecuado para su uso como dirección de Internet. La dirección convertida estará en orden de bytes de red (bytes ordenados de izquierda a derecha). Devuelve una dirección IPv4 ordenada por bytes de red binaria de 32 bits e INADDR_NONE en caso de error.

  • char *inet_ntoa (struct in_addr inaddr) - Esta llamada de función convierte la dirección de host de Internet especificada en una cadena en la notación de puntos estándar de Internet.

Funciones principales del socket

  • int socket (int family, int type, int protocol) - Esta llamada devuelve un descriptor de socket que puede usar en llamadas posteriores al sistema o le da -1 en caso de error.

  • int connect (int sockfd, struct sockaddr *serv_addr, int addrlen)- La función de conexión es utilizada por un cliente TCP para establecer una conexión con un servidor TCP. Esta llamada devuelve 0 si se conecta correctamente al servidor; de lo contrario, devuelve -1.

  • int bind(int sockfd, struct sockaddr *my_addr,int addrlen)- La función de vinculación asigna una dirección de protocolo local a un conector. Esta llamada devuelve 0 si se une correctamente a la dirección; de lo contrario, devuelve -1.

  • int listen(int sockfd, int backlog)- La función de escucha es llamada solo por un servidor TCP para escuchar la solicitud del cliente. Esta llamada devuelve 0 en caso de éxito; de lo contrario, devuelve -1.

  • int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)- La función de aceptación es llamada por un servidor TCP para aceptar las solicitudes de los clientes y establecer una conexión real. Esta llamada devuelve un descriptor no negativo en caso de éxito; de lo contrario, devuelve -1.

  • int send(int sockfd, const void *msg, int len, int flags)- La función de envío se utiliza para enviar datos a través de sockets de flujo o sockets de datagramas CONECTADOS. Esta llamada devuelve el número de bytes enviados; de lo contrario, devuelve -1.

  • int recv (int sockfd, void *buf, int len, unsigned int flags)- La función recv se utiliza para recibir datos a través de sockets de flujo o sockets de datagramas CONECTADOS. Esta llamada devuelve el número de bytes leídos en el búfer; de lo contrario, devuelve -1 en caso de error.

  • int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)- La función sendto se utiliza para enviar datos a través de conectores de datagramas NO CONECTADOS. Esta llamada devuelve el número de bytes enviados; de lo contrario, devuelve -1 en caso de error.

  • int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen)- La función recvfrom se utiliza para recibir datos de sockets de datagramas NO CONECTADOS. Esta llamada devuelve el número de bytes leídos en el búfer; de lo contrario, devuelve -1 en caso de error.

  • int close (int sockfd)- La función de cierre se utiliza para cerrar una comunicación entre el cliente y el servidor. Esta llamada devuelve 0 en caso de éxito; de lo contrario, devuelve -1.

  • int shutdown (int sockfd, int how)- La función de apagado se utiliza para cerrar con gracia una comunicación entre el cliente y el servidor. Esta función ofrece más control en comparación con la función de cierre. Devuelve 0 en caso de éxito, -1 en caso contrario.

  • int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) - Esta función se utiliza para leer o escribir múltiples sockets.

Funciones auxiliares de socket

  • int write (int fildes, const void *buf, int nbyte)- La función de escritura intenta escribir nbyte bytes desde el búfer al que apunta buf en el archivo asociado con el descriptor de archivo abierto, fildes. Una vez completado con éxito, write () devuelve el número de bytes realmente escritos en el archivo asociado con los archivos. Este número nunca es mayor que nbyte. De lo contrario, se devuelve -1.

  • int read (int fildes, const void *buf, int nbyte)- La función de lectura intenta leer nbyte bytes del archivo asociado con el descriptor de archivo abierto, fildes, en el búfer al que apunta buf. Una vez completado con éxito, write () devuelve el número de bytes realmente escritos en el archivo asociado con los archivos. Este número nunca es mayor que nbyte. De lo contrario, se devuelve -1.

  • int fork (void)- La función de horquilla crea un nuevo proceso. El nuevo proceso, llamado proceso hijo, será una copia exacta del proceso de llamada (proceso padre).

  • void bzero (void *s, int nbyte)- La función bzero coloca nbyte bytes nulos en la cadena s. Esta función se utilizará para configurar todas las estructuras de conectores con valores nulos.

  • int bcmp (const void *s1, const void *s2, int nbyte)- La función bcmp compara la cadena de bytes s1 con la cadena de bytes s2. Se supone que ambas cadenas tienen una longitud de nbyte bytes.

  • void bcopy (const void *s1, void *s2, int nbyte)- La función bcopy copia nbyte bytes de la cadena s1 a la cadena s2. Las cadenas superpuestas se manejan correctamente.

  • void *memset(void *s, int c, int nbyte) - La función memset también se usa para establecer variables de estructura de la misma manera que bzero.