Comenzando con dns
En esta página
Realizar búsquedas de nombres en C
La función getaddrinfo()
es la función POSIX recomendada para interactuar con el sistema de resolución. Dependiendo de la configuración del sistema, realizará búsquedas de nombres en el DNS, /etc/hosts
, mDNS, etc.
Es preferible a la familia de funciones gethostbyname()
en desuso porque admite direcciones IPv4 e IPv6, y también puede realizar búsquedas de nombres de servicios al mismo tiempo (por ejemplo, mapear http
al puerto 80)
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
...
struct addrinfo hints;
struct addrinfo *result;
int r;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; // allow IPv4 or IPv6
hints.ai_socktype = SOCK_STREAM; // make a stream (TCP) connection
r = getaddrinfo(hostname, "http", &hints, &result);
if (r != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r));
} else {
// iterate over the linked list
for (struct addrinfo *rp = result; rp != NULL; rp = rp->ai_next) {
// use rp fields to create a socket and connect to it
}
freeaddrinfo(result);
}