Código de C/Visual C - WHOIS

Imágen de perfil

WHOISgráfica de visualizaciones


C/Visual C

Publicado el 23 de Junio del 2023 por Hilario (122 códigos)
4.279 visualizaciones desde el 23 de Junio del 2023

////////////////////////////////////////////////////////

INIMICUM QUAMVIS HUMLEM DOCTI EST METUERE.

***********************************************
Hilario Iglesias Martínez.
**************************************************
Realizado en una plataforma linux 20.04.6 LTS.
Con ANSI C.
Ejecutado en Consola Linux.

Editado.
IDE sublime txt.

Este ejercicio, programa en C, implementa una consulta WHOIS enviando una solicitud al servidor WHOIS de IANA (Internet Assigned Numbers Authority). El usuario debe ingresar el dominio que desea consultar, y el programa se conectará al servidor WHOIS y enviará la consulta correspondiente. Luego, mostrará la respuesta recibida del servidor WHOIS a través de la consola.

Es importante tener en cuenta que algunos servidores WHOIS pueden bloquear o limitar las solicitudes, por lo que es posible que no siempre se obtenga una respuesta para todos los dominios.
El ejercicio está hecho para poder probar con el en todas las opciones o cambios que se le quieran realizar.

En las diferentes distros de linux se puede ejecutar directamente el comando whois. En mi caso utilizo una plataforma Ubuntu 20.04.6 LTS, y una de las formas de instalarlo sería con los siguientes comandos según su orden.
sudo apt-get update
sudo apt-get install whois

Durante la instalación, se te solicitará ingresar tu contraseña de administrador (root). Escribe tu contraseña y presiona Enter. Ten en cuenta que al escribir la contraseña, no se mostrarán caracteres ni asteriscos en la terminal, pero sigue escribiendo y presiona Enter.

Después de ingresar la contraseña, el sistema descargará e instalará el paquete whois y sus dependencias.

**********************************************************************************************
COMPILAR Y EJECUTAR EL PROGRAMA.
-----------------------------------------------------------------------------------
Compilar.
gcc -Werror whois.c -o whois
Ejecutar.
./whois

************************************************************************************
Salida del programa con el comando Ctrl C
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Requerimientos

Realizado en una plataforma linux 20.04.6 LTS.
Con ANSI C.
Ejecutado en Consola Linux.

Editado.
IDE sublime txt.

V-0.

Actualizado el 1 de Agosto del 2023 (Publicado el 23 de Junio del 2023)gráfica de visualizaciones de la versión: V-0.
4.281 visualizaciones desde el 23 de Junio del 2023
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
Servidor WHOIS de IANA (Internet Assigned Numbers Authority)
-----------------------------------------------------------
Compilar.
++++++++
gcc -Werror whois.c -o whois
Ejecutar.
++++++++
./whois
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>
 
#define BUFFER_SIZE 4096
 
int main() {
    char domain[100];
    printf("Por favor ingrese el dominio a consultar: ");
    scanf("%s", domain);
 
    char query[BUFFER_SIZE];
    snprintf(query, BUFFER_SIZE, "%s\r\n", domain);
 
    struct addrinfo hints, *result;
    memset(&hints, 0, sizeof(struct addrinfo));
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_STREAM;
 
    int status = getaddrinfo("whois.iana.org", "43", &hints, &result);
    if (status != 0) {
        fprintf(stderr, "Error en getaddrinfo: %s\n", gai_strerror(status));
        return 1;
    }
 
    int sock = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    if (sock == -1) {
        perror("Error al crear el socket");
        freeaddrinfo(result);
        return 1;
    }
 
    if (connect(sock, result->ai_addr, result->ai_addrlen) == -1) {
        perror("Error al conectar");
        freeaddrinfo(result);
        close(sock);
        return 1;
    }
 
    ssize_t sent = send(sock, query, strlen(query), 0);
    if (sent == -1) {
        perror("Error al enviar la consulta");
        freeaddrinfo(result);
        close(sock);
        return 1;
    }
 
    char response[BUFFER_SIZE];
    ssize_t received = recv(sock, response, BUFFER_SIZE - 1, 0);
    if (received == -1) {
        perror("Error al recibir la respuesta");
        freeaddrinfo(result);
        close(sock);
        return 1;
    }
 
    response[received] = '\0';
    printf("%s\n", response);
 
    freeaddrinfo(result);
    close(sock);
 
    return 0;
}



Comentarios sobre la versión: V-0. (0)


No hay comentarios
 

Comentar la versión: V-0.

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7386