C/Visual C - Conecciones de red

 
Vista:

Conecciones de red

Publicado por alberto (15 intervenciones) el 03/10/2002 06:32:14
Alguien sabe como programar conecciones de red, que no sea por medio de socket.
Si es posible desea poder manipular los paquetes TCP/IP

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programación de conexiones de red sin sockets y manipulación de paquetes TCP/IP

Publicado por Alejandro (913 intervenciones) el 24/03/2025 21:39:19

Solución 1: Programar conexiones de red sin sockets


Si deseas programar conexiones de red sin utilizar sockets, una alternativa es usar bibliotecas de alto nivel que abstraen la complejidad de los sockets. Por ejemplo, puedes utilizar WinHTTP o WinINet en Windows, que permiten realizar solicitudes HTTP y manejar conexiones de red sin tener que lidiar directamente con la API de sockets. Aquí tienes un ejemplo básico usando WinHTTP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <winhttp.h>
 
void realizarSolicitudHTTP() {
    HINTERNET hSession = WinHttpOpen(L"Ejemplo de cliente HTTP",
                                      WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                                      WINHTTP_NO_PROXY_NAME,
                                      WINHTTP_NO_PROXY_BYPASS, 0);
    HINTERNET hConnect = WinHttpConnect(hSession, L"www.ejemplo.com",
                                        INTERNET_DEFAULT_HTTP_PORT, 0);
    HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET",
                                            NULL, NULL,
                                            WINHTTP_NO_REFERER,
                                            WINHTTP_NO_ADDITIONAL_HEADERS,
                                            0);
    WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0,
                       WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
    // Manejar la respuesta aquí...
    WinHttpCloseHandle(hRequest);
    WinHttpCloseHandle(hConnect);
    WinHttpCloseHandle(hSession);
}

Solución 2: Manipular paquetes TCP/IP


Para manipular paquetes TCP/IP en C, puedes utilizar bibliotecas como libpcap y libnet. Estas bibliotecas te permiten capturar y enviar paquetes a nivel de red. Aquí tienes un ejemplo básico de cómo usar libnet para crear y enviar un paquete TCP:

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
#include <libnet.h>
 
void enviarPaqueteTCP() {
    char errbuf[LIBNET_ERRBUF_SIZE];
    libnet_t *l = libnet_init(LIBNET_RAW4, NULL, errbuf);
 
    if (l == NULL) {
        fprintf(stderr, "Error al inicializar libnet: %s\n", errbuf);
        return;
    }
 
    // Construir el paquete TCP aquí...
    uint16_t src_port = 12345; // Puerto de origen
    uint16_t dst_port = 80;     // Puerto de destino
    uint32_t src_ip = libnet_name2addr4(l, "192.168.1.1", LIBNET_RESOLVE); // IP de origen
    uint32_t dst_ip = libnet_name2addr4(l, "192.168.1.2", LIBNET_RESOLVE); // IP de destino
 
    // Crear el paquete TCP
    libnet_build_tcp(src_port, dst_port,
                     12345, 0,
                     TH_SYN,  // Tipo de paquete
                     32767,    // Tamaño de la ventana
                     0,        // Checksum
                     0,        // Opciones
                     LIBNET_PDU_RAW,
                     l,
                     0);
 
    // Enviar el paquete
    libnet_write(l);
    libnet_destroy(l);
}

Estas soluciones te proporcionan un punto de partida para trabajar con conexiones de red y manipulación de paquetes en C/Visual C.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar