Servidor web C++ sencillo

Servidor Web C Sencillo



En este artículo, aprenderemos sobre servidores web en C++. El objetivo principal del servidor web es manejar las solicitudes HTTP que llegan, procesar todas las solicitudes entrantes y responder con el contenido HTML web a cambio. Necesitamos mantener el servidor web en C++ simplemente agregando las bibliotecas de red en el entorno de C++, como 'sockets', para manejar las comunicaciones y los problemas de la red. Un servidor web es la columna vertebral de Internet y es una forma de comunicación entre los usuarios y los servidores principales. Evaluemos el proceso de creación de un servidor web simple a través de implementaciones de ejemplo adecuadas.

Configurar el entorno

Primero necesitamos configurar todas las opciones requeridas en nuestro entorno. Necesitamos utilizar los sockets para escuchar las solicitudes HTTP entrantes. Después de eso, vinculamos el socket al puerto específico de la máquina host como nuestro sistema. Después de eso, cuando los clientes solicitan la solicitud, el servidor escucha estas solicitudes entrantes conectadas. El servidor responde a las solicitudes del usuario a través de solicitudes HTTP para traer la solicitud del usuario al servidor. Después de eso, el servidor maneja la solicitud y devuelve las respuestas HTTP al usuario con la elaboración adecuada.







Manejo de sockets del servidor web

En esta sesión aprenderemos que los sockets crean comunicación entre diferentes procesos que se ejecutan en nuestro sistema. Los sockets se utilizan básicamente para crear la comunicación o conexión entre el navegador del cliente y nuestro servidor. La conexión del socket está construida en C++ de la forma que se menciona a continuación:



Aquí, definiremos las bibliotecas para sockets como '#include '. En la función principal, creamos el socket inicializando 'server_fd'. Después de eso, verificamos el valor del “server_fd” que contiene la validación de la conexión estándar. Si el servidor no funciona y no funciona bien, devuelve o muestra el mensaje 'Falló la creación del socket'. De lo contrario, el mensaje que tiene la dirección IP del servidor web mostrará los datos de HTML en el servidor web.



#incluir
#incluir
#incluir
ent principal ( ) {
int server_fd = conector ( AF_INET, SOCK_STREAM, 0 ) ;
    si ( servidor_fd == - 1 ) {
std::cerr << 'Error al crear el socket' ;
        devolver -1 ;
    }
    // demás
    // {
    // std::cout << 'salida' ;
    // }
    // unir
std::cout << 'http://:127.0.0.1:8080' ;
    // Más código va aquí
    devolver 0 ;
}

 
El resultado de este código se adjunta a continuación:






Esto muestra que el socket se creó correctamente en C++ para conectarse con el servidor web.

Manejo del servidor web en C++

El servidor web del sistema está configurado para manejar los diferentes conceptos de C++, como clasificación por combinación, clasificación lineal, etc. Recuerde inicializar las bibliotecas de red importantes. El servidor web se ejecuta en la máquina local (127.0.0.1) y escucha en el puerto 8080.



Incluya las bibliotecas necesarias en el lenguaje de programación C++ de la siguiente manera:

# incluir < aumentar / asio.hpp >

 
Recuerde que crear un servidor web en C++ no es un proceso fácil y que requiere mucho tiempo. Podemos manejar las conexiones entrantes usando 'async_accept'.

Respuestas del servidor en el código C++ en el servidor web

La respuesta del servidor debe ser HTTP, que funciona en el navegador y muestra el resultado en la vista HTML de la página web. Todas las bibliotecas administran los servidores y manejan todas las solicitudes válidas.

Vinculación y escucha del servidor web

A continuación, necesitamos conocer el enlace y la escucha del servidor web para ejecutar el código en la página web fácilmente. Después de eso, necesitamos vincular el socket a la dirección dada de nuestro sistema, básicamente la dirección IP y el puerto en el que estos sockets están activos. En el puerto, comenzamos a escuchar las conexiones entrantes.

Necesitamos inicializar las pocas bibliotecas para vincular y vincular.

Dirección Sockaddr_in;

 
Podemos vincular el servidor. Si el servidor está inactivo o no está conectado, el mensaje no se muestra en la página web de ningún navegador.

Aceptar las conexiones al servidor web

En esta sección, aprenderemos cómo podemos controlar el flujo de las solicitudes del cliente. El servidor acepta todas las solicitudes de los clientes a través del protocolo HTTP. El socket del servidor indica el tamaño del mensaje que se recibe en el servidor web desde el cliente. El mensaje contiene la conexión del socket del servidor y la dirección de forma más clara y única. Comprobamos si el servidor necesita responder si se encuentra o no el socket del usuario. Si no se encuentra la conexión del socket del usuario, no podemos aceptar la conexión a un servidor web.

Métodos de envío y recepción de datos desde el extremo del usuario y del servidor

Después de crear los enlaces de socket y aceptar la conexión, lo siguiente es enviar los datos al lado del servidor y recibir los datos del servidor usando diferentes palabras clave y construir las funciones relacionadas con el envío y la recepción de datos en C++. Aquí comprobamos la respuesta de los datos. ¿Esta solicitud es para obtener los datos o para PUBLICAR los datos desde el servidor web? Comprobamos el estado de respuesta de la solicitud del cliente. Almacenamos temporalmente todas las solicitudes de los clientes en el búfer para mostrar el mensaje o la salida en el servidor web.

Clasificación lineal en C++

Realicemos la clasificación lineal aquí y mostremos fácilmente el resultado de la clasificación lineal en el servidor web. El fragmento de código de la clasificación lineal se adjunta a continuación:

#incluir
usando el espacio de nombres estándar;
búsqueda lineal vacía ( int arr [ ] , int len, int elemento ) {
    para ( En t i = 0 ;i < len;i++ ) {
        si ( llegar [ i ] == artículo ) {
corte << artículo << 'Encontrado en el índice:' << i;
            devolver ;
        }
    }
corte << 'Extraviado' ;
}
ent principal ( ) {
int arr [ ] = { 10 , 5 , 15 , 21 , - 3 , 7 } ;
int len ​​= tamaño de ( llegar ) / tamaño de ( llegar [ 0 ] ) ;
elemento entero = 21 ;
Búsqueda lineal ( arr, len, artículo ) ;
    devolver 0 ;
}

 
En este ejemplo, buscamos el elemento '21' en cuyo índice. Entonces, ejecutamos este código. El resultado de este código se adjunta a continuación:


Esta salida ahora está abierta en el servidor web como en cualquier navegador como Chrome, Edge, etc.

Termine todas las conexiones después de la visualización de salida

Este es el último paso en el manejo de los datos en un servidor web. Recuerde cerrar las conexiones del socket después de realizar la salida requerida. Cerramos el socket aquí usando funciones como 'cerrar (server_id)' y 'cerrar (socket del cliente)'.

Al final de ejecutar el servidor, el resultado esperado se muestra en la página web accediendo a la dirección como “http://localhost:8080”.

Conclusión

Al final de este artículo, podemos decir que el manejo simple del servidor web en C++ es realmente complejo y necesita concentración total para enviar y recibir la solicitud del cliente HTTP. Podemos ampliar la funcionalidad del servidor web para mostrar el contenido dinámicamente en la página web. Con suerte, este artículo le resultará útil y podrá ejecutar estos ejemplos en su entorno para comprender los pasos necesarios para crear un servidor web simple en C++.