Programação C

Soquete POSIX com programação C

Soquete POSIX com programação C

Um POSIX Socket ou simplesmente um Socket é definido como um ponto final de comunicação. Por exemplo, se duas partes, A e B, pretendem se comunicar, será necessário que ambas as partes estabeleçam uma conexão entre seus respectivos terminais. Um soquete fornece às partes em comunicação um gateway através do qual as mensagens trafegam. Se falarmos em termos de cliente e servidor, então o trabalho do soquete do lado do servidor será ouvir as conexões de entrada, enquanto o soquete do lado do cliente será responsável por conectar-se ao soquete do lado do servidor. Este artigo tem como objetivo tornar o conceito de soquete POSIX com programação C muito mais claro.

Exemplo de uso de Posix Socket com programação C no Linux Mint 20

O exemplo apresentado a você nesta seção demonstrará uma interação entre um cliente e um servidor. O cliente e o servidor são as duas principais entidades do modelo cliente / servidor no mundo da computação. Em nosso exemplo, o cliente e o servidor estarão enviando e recebendo mensagens um do outro enquanto usam o soquete POSIX com programação C no Linux Mint 20. Para trazer clareza na compreensão do código, separamos o código do lado do cliente e o código do lado do servidor e iremos explicar ambos para você separadamente abaixo.

O código do lado do servidor

Para o código do lado do servidor, simplesmente criamos um documento vazio no diretório inicial de nosso sistema Linux Mint 20 e o nomeamos servidor.c. Nesse documento vazio, você precisa escrever os trechos de código mostrados nas três imagens abaixo:

O código mostrado nas imagens acima pode parecer longo, no entanto, vamos tentar entendê-lo de uma maneira extremamente fácil. Em primeiro lugar, criamos um soquete e o anexamos com o número da porta desejada, que no nosso caso é 8080. Em seguida, escrevemos uma função de escuta, que está lá para procurar todas as conexões de entrada dos clientes. Basicamente, o cliente consegue se conectar ao servidor apenas por causa da presença desta função de escuta. E uma vez que esta conexão é estabelecida, o servidor está pronto para enviar e receber dados de e para o cliente.

As funções ler e enviar servem para o propósito de receber e enviar mensagens aos clientes, respectivamente. Já definimos uma mensagem padrão em nosso código que pretendemos enviar ao nosso cliente, que é “Hello from server”. Depois de enviar esta mensagem para o cliente, ela será exibida no lado do cliente, enquanto uma mensagem dizendo “Olá mensagem enviada” será exibida no lado do servidor. Isso é tudo sobre o nosso código do lado do servidor.

O código do lado do cliente

Agora, para o código do lado do cliente, novamente, criamos um documento vazio no diretório inicial de nosso sistema Linux Mint 20 e o nomeamos cliente.c. Nesse documento vazio, você precisa escrever os trechos de código mostrados nas duas imagens abaixo:

No código do lado do cliente mostrado nas imagens acima, criamos um soquete da mesma maneira que criamos para o código do lado do servidor. Então, há uma função de conexão que tentará fazer uma conexão com o servidor através da porta especificada. E uma vez que esta conexão seja aceita pelo servidor, o cliente e o servidor estarão todos configurados para enviar e receber mensagens um para o outro.

Novamente, assim como o código do lado do servidor, as funções de envio e leitura existem para enviar e receber mensagens do servidor, respectivamente. Além disso, mencionamos uma mensagem padrão que queremos enviar ao servidor, que é “Olá do cliente”. Depois de enviar esta mensagem para o servidor, esta mensagem será exibida no lado do servidor, enquanto uma mensagem dizendo “Olá mensagem enviada” será exibida no lado do cliente. E isso nos leva ao final da explicação de nosso código do lado do cliente.

Compilando e executando os códigos do cliente e do servidor

Obviamente, estaremos salvando nossos arquivos do lado do cliente e do lado do servidor após escrever esses programas, então estaremos prontos para compilar e executar esses códigos. Assim, seremos capazes de visualizar a interação entre nosso cliente e servidor recém-criado. Para atingir este objetivo, temos que lançar dois terminais diferentes, uma vez que devemos executar dois programas separados. Um terminal será dedicado a executar o código do lado do servidor e o outro para o código do lado do cliente.

Portanto, para compilar nosso código do lado do servidor, executaremos o seguinte comando no primeiro terminal:

servidor $ gcc.c -o servidor

Depois de executar este comando, se não houver erros em seu código do lado do servidor, nada será exibido no terminal, o que será uma indicação de uma compilação bem-sucedida.

Da mesma maneira, iremos compilar o código do lado do cliente com o comando mostrado abaixo, executando-o no segundo terminal:

cliente $ gcc.c -o cliente

Assim que ambos os códigos forem compilados, iremos executá-los um por um. No entanto, devemos executar o código do lado do servidor primeiro, pois ele deve ouvir as solicitações de conexão. O código do lado do servidor pode ser executado com o seguinte comando:

$ ./servidor

Depois de executar o código do lado do servidor, podemos executar o código do lado do cliente com o comando mostrado abaixo:

$ ./cliente

Assim que o cliente e o servidor estiverem funcionando, você testemunhará os resultados mostrados nas seguintes imagens em ambos os terminais:

Conclusão

Esperançosamente, depois de passar pelo exemplo compartilhado com você neste artigo, você será capaz de usar os Sockets POSIX de forma eficiente para enviar e receber dados entre um cliente e um servidor. Este exemplo é apenas uma demonstração básica dos soquetes Posix com programação C, no entanto, você pode até mesmo tornar esses programas mais complexos de acordo com seus requisitos.

5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...