Comunicação entre servidores-clientes através de programação de soquetes usando TCP/IP

Comunicação entre servidores-clientes através de programação de soquetes usando TCP/IP

Nisso tutorial, vou explicar como como a comunicação servidor-cliente usa TCP/IP. Eu já expliquei sobre soquete e Como criar soquete no Linux. Antes da explicação, vamos ver algumas visões básicas da terminologia.
Três coisas principais são necessárias para estabelecer a conexão entre os modelos servidor-cliente: 1) Protocolo de transporte (TCP ou UDP) 2) Soquete 3) Endereço IP e porta Protocolo de transporte (TCP): TCP é um protocolo orientado a conexão que significa protocolo de controle de transferência. É um protocolo confiável e seguro. No TCP, o receptor pode gerar a confirmação do pacote recebido, portanto o remetente (cliente) precisa aguardar uma confirmação e se a resposta não vier ou algum erro de pacote for gerado, ele será reenviado para o cliente. Soquete: O soquete é uma conexão de ponto final para comunicação entre duas máquinas. É como um caminho de conectividade de dados entre dois terminais sem fio. O soquete é necessário em ambos os lados do servidor e do cliente. Você pode consultar o tutorial soquete e Como criar soquete no Linux. Endereço IP e porta O endereço IP é um endereço numérico exclusivo de cada computador e dispositivo. Ele desempenha um papel importante no domínio da rede com protocolo da Internet. No modelo servidor-cliente, o servidor precisa saber qual dispositivo está conectado a ele e com quem o servidor estabelece a conexão. O endereço IP desempenha um papel importante na comunicação entre modelos servidor-cliente. Em termos de rede, a porta é o local para onde as informações são enviadas. Vários protocolos atribuem diferentes números de porta. Um número de porta específico é necessário para a comunicação entre servidor-cliente de acordo com o protocolo usado. Vamos verificar como obter o endereço IP do usuário. Digite o seguinte comando no terminal de comando: ifconfig Ele exibe informações de rede como endereço, pacote de dados, etc. Certifique-se de qual tipo de conexão com a Internet está em seu sistema. O endereço IP do sistema está localizado por inet endereço. É o endereço IP do seu sistema. Por exemplo, endereço inet: xxx.xx.xx.xx Aqui, x representa o valor numérico. Servidor – Comunicação Cliente usando TCP/IP O modelo servidor-cliente é o modelo de comunicação para compartilhar o recurso e fornecer o serviço para diferentes máquinas. Servidor é o principal sistema que fornece os recursos e diversos tipos de serviços quando o cliente solicita utilizá-lo. Vejamos, comunicação servidor-cliente através de programação de soquete usando TCP/IP. Achei que você conhecesse a programação C básica e o soquete. Por favor, consulte o tutorial soquete e Como criar soquete no Linux antes de aprender este tutorial. Comunicação servidor-cliente usando TCP/IP As seguintes tarefas são realizadas no lado do cliente: • Crie um soquete para comunicação • Configure o protocolo TCP com endereço IP do servidor e número da porta • Conecte-se ao servidor através de soquete • Aguarde a confirmação do servidor • Enviar mensagem para o servidor • Receber mensagem do servidor As seguintes tarefas são realizadas no lado do servidor: • Crie um soquete para comunicação • Vincule a porta local e o endereço de conexão • Configure o protocolo TCP com número de porta • Ouvir a conexão do cliente • Aceitar conexão do cliente • Enviar confirmação • Receber mensagem do cliente • Enviar mensagem ao cliente Aqui escrevi dois programas individuais, um para o lado do servidor e outro para o lado do cliente. Precisamos de um computador com ambiente Linux. Mas não se preocupe; você pode se comunicar com apenas um único sistema. Programa do lado do cliente: //*********************************TCP_client.c************ ********************// #include #include #include #include #include #include #include #include #include int principal { char enviarMensagem(512),receberMensagem(512); meia interna, resultado; estrutura hostent *host; estrutura sockaddr_in serverAdd; host = gethostbyname(“xxx.xx.xx.xx”); if ((meia = soquete(AF_INET, SOCK_STREAM, 0)) == -1) { perror(“Falha na criação do soquete”); saída(1); } serverAdd.sin_family = AF_INET; serverAdd.sin_port=htons(5000); serverAdd.sin_addr = *((struct in_addr *)host->h_addr); bzero(&(servidorAdd.sin_zero),8); if (connect(sock, (struct sockaddr *)&serverAdd, sizeof(struct sockaddr)) == -1) { perror(“Falha na conexão”); saída(1); } enquanto(1) { resultado = recv(meia,receberMensagem,1024,0); receberMensagem(resultado) = ”; printf(“nMensagem recebida: %s”, recebeMensagem); printf(“nENVIAR A mensagem: “); fgets(sendMessage,512,stdin); enviar(meia,enviarMensagem,strlen(enviarMensagem), 0); } retornar 0; } //*********************************TCP_client.c************ ********************// Programa do lado do servidor: //*********************************TCP_server.c************ *******************// #include #include #include #include #include #include #include #include #include int principal { char enviarMensagem(1024), receberMensagem(1024); int meia, conectado, resultado; estrutura sockaddr_in serverAdd, clientAdd; comprimento interno; if ((meia = soquete(AF_INET, SOCK_STREAM, 0)) == -1) { perror(“Falha na criação do soquete”); saída(1); } if (setsockopt(meia,SOL_SOCKET,SO_REUSEADDR,&1,tamanho(int)) == -1) { perror(“Definir opção de soquete”); saída(1); } serverAdd.sin_family = AF_INET; serverAdd.sin_port=htons(5000); serverAdd.sin_addr.s_addr=INADDR_ANY; bzero(&(servidorAdd.sin_zero),8); if (bind(sock, (struct sockaddr *)&serverAdd, sizeof(struct sockaddr))== -1) { perror(“Não foi possível vincular”); saída(1); } if (ouvir(meia, 3) == -1) { perror(“Ouvir”); saída(1); } printf(“TCPServer aguardando conexão do clienten”); flush(stdout); enquanto(1) { comprimento = sizeof(struct sockaddr_in); conectado = aceitar(meia,(struct sockaddr *)&clientAdd,&length); printf(“O servidor está conectado com o endereço IP %se porta %d n”,inet_ntoa(clientAdd.sin_addr),ntohs(clientAdd.sin_port)); enquanto (1) { printf(” ENVIE a mensagem: “); fgets(sendMessage,100,stdin); enviar(conectado, enviarMensagem,strlen(enviarMensagem), 0); resultado = recv(conectado,receberMensagem,512,0); receberMensagem(resultado) = ”; printf(“Mensagem recebida: %sn”, recebeMensagem); flush(stdout); } } retornar 0; } //*********************************TCP_server.c************ *******************// Salve o arquivo no diretório e compile-o. Após a compilação bem-sucedida, execute o arquivo executável no terminal de comando. Você pode consultar o tutorial Como fazer o primeiro programa C no Linux se não estiver ciente do processo de compilação e execução. Observação: Anote o endereço IP do seu servidor no lugar de “xxx.xxx.xx.xx”. no programa do lado do cliente. Execute o programa servidor –cliente no mesmo sistema Você pode executar o programa cliente-servidor na mesma máquina. Primeiro encontre o endereço IP do seu PC cliente conforme descrevi acima. Agora, se você quiser rodar no mesmo PC o mesmo IP é inserido no código fonte do cliente. Salve o código-fonte do servidor e do cliente no mesmo PC. Abra o terminal de comando e execute o primeiro arquivo executável do servidor. O código do lado do servidor está em modo de execução. Não interrompa o código. Abra outro terminal de comando e execute o arquivo executável do lado do cliente. Nota: Se você não executar lado do servidor código e tente executar o primeiro código do lado do cliente, ocorrerá um erro de conexão recusada. Veja a imagem a seguir para compreensão: Aqui, as partes pretas da imagem indicam o endereço IP do cliente conectado e o número da porta. Agora, insira a mensagem do terminal do servidor. Agora você pode enviar dados do cliente para o servidor. O modelo servidor-cliente é comunicado usando TCP/IP. Insira os dados do cliente terminal e verifique. Aqui, não terminei a conexão. Assim, ambos podem se comunicar até a conexão está fechada. Pressione ctrl + C de qual terminal você deseja sair.

Zurück zum Blog

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung freigegeben werden.