Criando um aplicativo servidor-cliente com soquete C.
Clone o projeto e o CD no diretório principal.
Abra um terminal e configure seu servidor com o seguinte comando:
./server [port]Você deve obter um resultado como este:
Listening on 0.0.0.0:8080Depois disso, conecte -se ao servidor com seu cliente usando este comando:
./client [IP] [port]A programação do soquete é uma maneira de conectar dois nós em uma rede para se comunicar. Um soquete (nó) ouve em uma porta específica em um IP, enquanto outro soquete chega ao outro para formar uma conexão. O servidor forma o soquete do ouvinte enquanto o cliente chega ao servidor.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Após a criação do soquete, a função de ligação liga o soquete ao endereço e ao número da porta especificado no ADDR (estrutura de dados personalizada). No código de exemplo, vinculamos o servidor ao host local, portanto, usamos inaddr_any para especificar o endereço IP.
int listen ( int sockfd , int backlog );Ele coloca o soquete do servidor em um modo passivo, onde aguarda que o cliente se aproxime do servidor para fazer uma conexão. A lista de pendências define o comprimento máximo ao qual a fila de conexões pendentes para o Sockfd pode crescer. Se uma solicitação de conexão chegar quando a fila estiver cheia, o cliente poderá receber um erro com uma indicação de EconnRefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );Ele extrai a primeira solicitação de conexão na fila de conexões pendentes para o soquete de escuta, Sockfd, cria um novo soquete conectado e retorna um novo descritor de arquivo referente a esse soquete. Neste ponto, a conexão é estabelecida entre cliente e servidor e eles estão prontos para transferir dados.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );A chamada do sistema Connect () conecta o soquete referido pelo descritor de arquivo Sockfd ao endereço especificado por Addr. O endereço e a porta do servidor são especificados no ADDR.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );Usando o Pthread para criar um thread para cada um de nossos clientes e lidar com um método específico.