Giter Club home page Giter Club logo

networkdriver's Introduction

NetworkDriver

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).

Descripción:

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.

Caracteristicas:

Caracteristicas generales:

  1. Comunicacion cliente-servidor: Establece una conexión bidireccional entre un servidor y un cliente mediante sockets.
  2. 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.
  3. Uso de sockets: Utiliza la librería de sockets para la comunicación, con funciones como socket, bind, listen, accept, send, y recv.

Caracteristicas del servidor:

  1. Espera de conexiones entrantes: El servidor está en un bucle infinito esperando y aceptando conexiones entrantes de clientes.
  2. 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.
  3. Cierre del socket: Cierra adecuadamente el socket del servidor al finalizar el programa.

Caracteristicas del cliente:

  1. Creación y conexión del socket del cliente: Crea un socket del cliente y se conecta al servidor utilizando la función connect.
  2. Envío y recepción de datos: Envía datos al servidor utilizando la función send y recibe datos del servidor utilizando recv.
  3. Cierre del socket del cliente: Cierra adecuadamente el socket del cliente al finalizar el programa.

arquitectura

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().

Tecnologías utilizadas

  • Visual Studio Code
  • g++ (compilador de c++)
  • C/C++ (extension de vs code)
  • C/C++ Compile Run (extension de vs code)
  • Sistema Operativo Linux

Librerias utilizadas de C++

  • 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])

Documentaciones y guías:

c++

Beej's Guide to Network Programming. Using Internet Sockets

Compilación

Compilar el servidor

g++ server.cpp -o server

Compilar el cliente

g++ client.cpp -o client

Ejecución

  1. Ejecuta el servidor
./server
  1. Ejecuta el cliente (en otra terminal)
./client

networkdriver's People

Contributors

lizferreira avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.