Enviar 2 c função

Enviar 2 c função
“Para enviar uma mensagem de um soquete para outro canal, podemos utilizar as funções do sistema send (), sendto () e sendmsg () da linguagem C no sistema Kali Linux. Podemos invocar a função send () quando o soquete estiver conectado (para que o destinatário pretendido seja conhecido). A existência de bandeiras é o único diferencial entre send () e gravação (2) funções. A função send () é equivalente a escrever (2) com um parâmetro de sinalizadores de zero. Além disso, a próxima chamada é equivalente a WQ1 send (Socket_File_Descriptor, buffer, comprimento, sinalizadores);
sendTo (Socket_File_Descriptor, buffer, comprimento, sinalizadores, nulo, 0);

O descritor de arquivos do soquete de envio está contido no argumento soket_file_descriptor. A mensagem está localizada em um buffer e tem um comprimento para send () e sendto (). Precisamos de um servidor e terminais de clientes para entender a funcionalidade da função send () praticamente. Para esse fim, temos que escrever o código para o servidor, bem como o cliente. Utilizando o editor Vim, crie um servidor.C Arquivo de programação. Este é o comando para abrir um arquivo de codificação no editor Vim.”

Depois de incluir os arquivos de cabeçalho necessários nas cinco primeiras linhas do servidor.Arquivo C, definimos uma variável de porta e definimos seu valor como 8000. Após o lançamento da função principal, declaramos três variáveis ​​do tipo inteiro chamado servidor FD (servidor Descritor de arquivo), um novo soquete e uma mensagem lida na primeira linha. Declare a variável de endereço do tipo Sockaddr depois disso.

Em seguida, definimos o valor de uma opção variável para ser 1. Utilizando a função size_of, que é igual para abordar, defina a variável de comprimento do endereço. Defina o tamanho do buffer variável de matriz do tipo de caractere como 1024 e defina os valores para 0. Uma mensagem variável do tipo de caractere é definida e, dado o valor de “oi, eu sou servidor. Como posso ajudá-lo?”. Os tipos de endereços com os quais seu soquete pode se comunicar são designados pela família Af_INET (neste caso, endereços V4 do protocolo da Internet).

Em uma declaração condicional, atribua o descritor do arquivo do servidor e verifique se a atribuição causa um erro. Se falhar, mostre a mensagem de erro "falha no soquete" e deixe a função principal. Usando a função SetSockOpt (), um programa de aplicativo pode gerenciar como um soquete se comporta. Como a porta 8080 não está disponível, estamos conectando à força o soquete à porta 8000 nesta expressão condicional. Ligamos propositalmente o soquete do servidor à porta 8080 na segunda linha condicional. Se o processo de ligação não foi como planejado, use o método Perror para exibir uma mensagem de erro e a função de saída para deixar a função principal. Verifique se o servidor está ouvindo a solicitação do cliente na terceira expressão condicional.

Aceitamos a conexão do servidor e definimos o novo valor de soquete na quarta instrução condicional, indicando que o servidor está recebendo a solicitação do cliente. A mensagem enviada pelo cliente usando o soquete e o buffer agora deve ser lida. A mensagem do cliente será mostrada na tela do terminal e enviada ao cliente indicada no início da função principal. Feche o soquete e desligue o canal usando o mecanismo de desligamento após uma comunicação bem -sucedida ocorrendo ao passar pelo descritor do arquivo do servidor e fechar o comando rdwr.

Feche o editor do VIM e compile o código usando o compilador GCC. Salve o arquivo de saída ou objeto no arquivo do servidor:

Agora é hora de testar se o código do servidor está em execução ou não depois de concluir a compilação. Use o./script de servidor dentro do terminal e a tecla Enter para fazer isso. Quando o cursor pisca, o servidor está ativo e aguardando uma solicitação do cliente:

Agora temos que escrever o código do cliente usando o editor Vim e salvá -lo no cliente.Arquivo C.

O código do cliente é exibido na tela abaixo. Inclui os arquivos de cabeçalho nas primeiras linhas e define a porta usada para comunicação entre servidor e cliente para 8000. Crie três variáveis ​​do tipo inteiro e defina o valor das meias como 0 dentro da função principal. Em seguida, faça uma variável com o Sockaddr no tipo. Defina uma variável de mensagem com o valor “Saudações do cliente!”E salve.

Agora use uma instrução condicional para criar o soquete e salvar o valor na variável de soquete. Os endereços IPv4 ou IPv6 são então convertidos de texto para binário. Utilizamos o padrão 127 do servidor.0.0.1 endereço IP. Empregamos a função inet_pton por esse motivo. Em seguida, criamos o código para usar a função Connect para conectar -se ao soquete e definir o descritor do arquivo do cliente. O endereço do servidor foi fornecido a ele. Agora estamos preparados para usar a função Enviar para entregar a mensagem ao servidor.

O soquete, a mensagem, o comprimento da mensagem e a bandeira é definida como 0-está tudo incluído no método de envio. Exibir o terminal no cliente quando a mensagem for enviada. Em seguida, leia a resposta do servidor e exiba -a na tela. Feche o descritor de arquivo após uma comunicação bem -sucedida.

Agora compile o código conforme fornecido no trecho abaixo.

Você deve ter em mente que deve executar o servidor antes de executar o cliente, porque se o servidor não estiver respondendo, o cliente não se conectará e uma mensagem de erro aparecerá na tela. No caso de uma quebra de comunicação, esta é a saída.

Aqui está a captura de tela da comunicação bem-sucedida no lado do servidor:

No lado do cliente:

Conclusão

Neste artigo, demonstramos o uso da função send () de C no programa Kali Linux. Esteja ciente de que não podemos interagir no mesmo terminal; portanto, devemos abrir dois, um para o servidor e outro para o cliente. Este exemplo pode ser ajustado conforme as necessidades do usuário.