O soquete conecta a programação em C é definida como os dois nós em uma rede que pode se conectar e interagir entre si. O outro soquete (nó) chega ao primeiro soquete para estabelecer uma conexão enquanto o primeiro soquete escuta em uma determinada porta em um IP. Uma conexão de soquete serve como um canal de comunicação entre duas partes para enviar mensagens. Vamos escrever este guia para melhorar significativamente sua compreensão da conexão de soquete usando o paradigma de programação C C. Enviaremos mensagens entre o servidor e o cliente usando o conceito de programação C neste guia.
Exemplo:
Os exemplos apresentados neste guia são realizados no Ubuntu 20.04. Assim, para fazer esses exemplos com o Ubuntu 20.04, o compilador GCC deve ser instalado. Após a instalação do GCC, alguns códigos C são gravados para demonstrar o uso do "soquete de conexão". Neste exemplo, vamos criar dois arquivos de código diferentes, um é o código do lado do cliente e o outro é o código do servidor. Conectaremos os dois arquivos e enviaremos mensagens entre eles.
Código do lado do servidor
Utilizamos o editor de texto que vem com o Ubuntu 20.04. Primeiro, adicionamos os diferentes arquivos de cabeçalho, como mostrado na captura de tela. Esses arquivos de cabeçalho são essenciais para este código de conexão de soquete. Após esses arquivos de cabeçalho, definimos a porta “8080”. Depois disso, usamos a função "main ()" e temos as diferentes variáveis locais dentro desta função "main ()". Catamos um "buffer []" do tamanho "1024" abaixo dessas variáveis. O buffer é usado aqui para enviar e receber os dados.
Então, criamos o soquete dentro da declaração "se". Neste soquete, damos o endereço IP como "AF_INET". O tipo de conexão é "Sock_stream", que é passado aqui como o segundo parâmetro e passa o "0" como o terceiro parâmetro. Se a condição fornecida for satisfeita, a declaração abaixo desta declaração "se" for executada onde colocamos a declaração "Perror" que imprime o erro no terminal. Em seguida, anexamos este soquete à porta “8080”.
Usamos o "setSocketOpt". Isso facilita a alteração dos parâmetros para o soquete que o descritor de arquivo Sockfd se refere. Embora totalmente opcional, isso promove o endereço e a reutilização da porta. Erros como "endereço já em uso" são evitados. Depois disso, especificamos o endereço para o soquete. Está definido no arquivo de cabeçalho. Para o “endereço.sin_port ”, usamos os“ htons ”que são usados para converter o número da porta em uma ordem de byte host.
Então, temos a função "bind ()" dentro da instrução "se". Esta função "bind ()" é usada para ligar um soquete a um endereço. Ele contém três parâmetros. Depois disso, criamos uma variável "Valread" e colocamos a fucência "read ()". Em vez do descritor de arquivo inicial fornecido pelo soquete, a chamada de leitura utiliza o novo descritor de arquivo fornecido pela função "aceit ()". Temos a declaração "printf" que é usada para exibir os dados. Em seguida, usamos a função "send ()". Esta função é usada para enviar os dados nos soquetes.
Então, novamente temos a declaração "printf" e a função "Close ()". Isso é usado para desligar o soquete e liberar todos os recursos que são alocados ao soquete. A função "desligar ()" também está aqui para desligar a conexão do soquete. No final, temos uma declaração "Return 0".
Código do lado do cliente
Este código é semelhante ao código do servidor anterior. Inserimos os diferentes arquivos de cabeçalho que são necessários para este código. Então, declaramos a função "principal". Dentro desta função "main ()", temos várias variáveis locais. Estabelecemos um "buffer []" do tamanho "1024" após essas variáveis. A transmissão e recepção de dados neste caso empregam o buffer. Criamos o soquete dentro da declaração "se". O endereço IP para este soquete é "AF INET". O tipo de conexão para este soquete é "Stream de meia", que é fornecido como o segundo parâmetro e "0" como o terceiro parâmetro.
Depois disso, especificamos os endereços após a criação do soquete. Em seguida, usamos este endereço dentro da instrução "se" e temos a declaração "printf" aqui. O primeiro argumento que temos é o "descritor de arquivo de soquete", o segundo argumento é o endereço do host e o terceiro argumento é o tamanho do endereço. A função "send ()" é então usada. Os dados enviados através dos soquetes são enviados usando esta função. O comando "printf" e a função "close ()" estão então presentes mais uma vez. Isso é feito para fechar o soquete e liberar todos os recursos que são atribuídos a ele.
Saída:
Como devemos executar dois códigos independentes, devemos lançar dois terminais separados para atingir esse objetivo. O código do lado do cliente é executado em um terminal enquanto o código do servidor é executado no outro terminal. No primeiro terminal, inserimos o seguinte comando para compilar nosso código do lado do servidor:
Ao executar o comando a seguir no segundo terminal, compilamos o código do lado do cliente da mesma maneira:
Nós executamos os dois códigos um de cada vez quando eles são compilados. No entanto, como o código do lado do servidor deve monitorar as solicitações de conexão, devemos executá-lo primeiro. O comando a seguir pode ser usado para executar o código do lado do servidor:
Depois disso, o comando a seguir pode ser usado para executar o código do lado do cliente:
Depois de usar os dois comandos em ambos os terminais simultaneamente, obtemos esta saída que é mostrada no seguinte:
Conclusão
Apresentamos este guia para ajudá -lo a entender o "soquete Connect" na programação C. Explicamos isso em detalhes e fornecemos exemplos como saída. Você poderá enviar e receber efetivamente os dados entre um cliente e servidor usando os soquetes depois de passar pelo exemplo fornecido a você neste guia. Este exemplo serve apenas como uma ilustração simples sobre como conectar os soquetes com a programação C e como os dados são enviados.