Implementación de un controlador de red en C++ que utiliza sockets para facilitar la comunicación eficiente entre un servidor y un cliente a través de una red (protocolo TCP).
Este proyecto implementa un controlador de red en C++ que utiliza sockets para facilitar la comunicación eficiente entre un servidor y un cliente a través de una red.
- Comunicacion cliente-servidor: Establece una conexión bidireccional entre un servidor y un cliente mediante sockets.
- Manejo de errores: Incluye manejo básico de errores para situaciones como la creación del socket, la vinculación del servidor, la escucha de solicitudes y la aceptación de conexiones.
- Uso de sockets: Utiliza la librería de sockets para la comunicación, con funciones como socket, bind, listen, accept, send, y recv.
- Espera de conexiones entrantes: El servidor está en un bucle infinito esperando y aceptando conexiones entrantes de clientes.
- Recepcion y envio de datos: Recibe datos del cliente utilizando la función recv y envía una respuesta predefinida al cliente usando la función send.
- Cierre del socket: Cierra adecuadamente el socket del servidor al finalizar el programa.
- Creación y conexión del socket del cliente: Crea un socket del cliente y se conecta al servidor utilizando la función connect.
- Envío y recepción de datos: Envía datos al servidor utilizando la función send y recibe datos del servidor utilizando recv.
- Cierre del socket del cliente: Cierra adecuadamente el socket del cliente al finalizar el programa.
Del lado del servidor, primero se debe crear un socket, que se puede crear mediante la funcion socket(). Luego se configura la dirección del servidor para posteriormente vincular al puerto utilizando bind(). Una vez creado el socket y conectado la dirección ip y el puerto, se llama a la funcion listen() para eschuchar las solicitudes de conexión de otros programas (cliente). Cuando un cliente solicita una conexión con el servidor, necesita utilizar la función accept() para aceptar la solicitud de conexión y devolver un nuevo socket. Una vez establecida la conexión, el servidor y el cliente pueden enviar y recibir datos entre ellos, lo que se puede lograr utilizando las funciones send() y recv(). Una vez completada la transferencia de datos, se debe cerrar la conexión con la funcion close().
- Visual Studio Code
- g++ (compilador de c++)
- C/C++ (extension de vs code)
- C/C++ Compile Run (extension de vs code)
- Sistema Operativo Linux
- iostream (biblioteca estandar de c++ para entrada y salida [cout, cerr])
- cstring (para operaciones con cadenas)
- netinet/in.h (para configurar la direccion del servidor)
- sys/socket.h (funciones para programar con sockets [socket, bind, listen, accept, recv, etc.])
- unistd.h (funciones relacionadas con el sistema operativo [close, etc])
Compilar el servidor
g++ server.cpp -o server
Compilar el cliente
g++ client.cpp -o client
- Ejecuta el servidor
./server
- Ejecuta el cliente (en otra terminal)
./client