Creación de una aplicación servidor-cliente con C Socket.
Clonar el proyecto y CD en el directorio principal.
Abra un terminal y configure su servidor con el siguiente comando:
./server [port]Deberías obtener un resultado como este:
Listening on 0.0.0.0:8080Después de eso, conecte al servidor con su cliente usando este comando:
./client [IP] [port]La programación de socket es una forma de conectar dos nodos en una red para comunicarse entre sí. Un socket (nodo) escucha en un puerto en particular en una IP, mientras que otros socket se acercan al otro para formar una conexión. El servidor forma el socket del oyente mientras el cliente se acerca al servidor.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Después de la creación del socket, la función de enlace une el socket a la dirección y el número de puerto especificado en ADDR (estructura de datos personalizada). En el código de ejemplo, vinculamos el servidor al localhost, por lo tanto, usamos inAddr_any para especificar la dirección IP.
int listen ( int sockfd , int backlog );Pone al socket del servidor en modo pasivo, donde espera a que el cliente se acerque al servidor para hacer una conexión. La acumulación, define la longitud máxima a la que puede crecer la cola de conexiones pendientes para SockFD. Si llega una solicitud de conexión cuando la cola está llena, el cliente puede recibir un error con una indicación de ECONNRefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );Extrae la primera solicitud de conexión en la cola de conexiones pendientes para el socket de escucha, Sockfd, crea un nuevo enchufe conectado y devuelve un nuevo descriptor de archivo que se refiere a ese socket. En este punto, la conexión se establece entre el cliente y el servidor, y están listos para transferir datos.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );La llamada del sistema Connect () conecta el socket mencionado por el descriptor de archivo Sockfd a la dirección especificada por ADDR. La dirección y el puerto del servidor se especifican en ADDR.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );Uso de PTHREAD para crear un hilo para cada uno de nuestros clientes y manejarlos con un método específico.