Eu estou criando uma aplicação cliente/servidor em C no ubuntu. O propósito é bem simples, saber se vale mais a pena alugar ou vender um imóvel, o usuário digita o valor do aluguel, os meses que irá alugar e o valor que irá vender e o servidor faz as contas e devolve o resultado. Tudo está dentro de um do while para ficar infinito, no final o usuário digita CONTINUAR para testar outros valores e SAIR para encerrar a conexão. Mas está com um problema que não consigo identificar. A primeira vez que comparamos valores, o servidor retorna o resultado correto(alugar ou vender), porém a partir da segunda vez ao digitar CONTINUAR, ele sempre retorna resultados errados. Eu suspeito que esteja armazenando dados na variáveis erradas a partir da segunda vez, coloquei uns prints no meio do código para mostrar os valores e tem divergência.E também tentei zerar as variáveis no começo e usar vários bzero e fflush, mas sem resultado. Mas não tenho certeza de nada. Podem me ajudar?
CÓDIGO DO CLIENTE:
#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#include<stdio.h>#include<stdlib.h>#include<strings.h>#include<string.h>
int main (){struct sockaddr_in sock;int con, sockid,numbytes;char resposta[10];char buf[100];char aluguel[10];char venda[10];char meses[2];
sockid = socket(AF_INET, SOCK_STREAM,0);
bzero(&(sock),sizeof(sock));
sock.sin_family = AF_INET;
sock.sin_port = htons(9012);
inet_pton(AF_INET,"127.0.0.1",&sock.sin_addr);
con=connect(sockid,(struct sockaddr*)&sock,sizeof(sock));do{if(con>=0){
printf("=====================================================\n");
printf("Descubra se vale a pena vender ou alugar seu imóvel\n");
printf("=====================================================\n");
printf("Digite por quanto voce quer alugar: \n");
scanf("%s",&aluguel);
printf("=====================================================\n");if(send(sockid,aluguel,strlen(aluguel),0)==-1){
printf("Erro ao enviar mensagem\n");
close(sockid);}
printf("Digite por quantos meses ira alugar : \n");
scanf("%s",&meses);
printf("=====================================================\n");if(send(sockid,meses,strlen(meses),0)==-1){
printf("Erro ao enviar mensagem\n");
close(sockid);}
printf("Digite por quanto quer vender: \n");
scanf("%s",&venda);
printf("=====================================================\n");if(send(sockid,venda,strlen(venda),0)==-1){
printf("Erro ao enviar mensagem \n");
close(sockid);}
bzero(&buf,sizeof(buf));if((numbytes=recv(sockid,buf,100,0)==-1)){
printf("Erro ao receber a mensagem\n");}
printf("Vale mais a pena: %s\n",buf);
printf("Digite SAIR para sair ou CONTINUAR para continuar a comparar.\n");
scanf("%s",&resposta);
fflush(stdin);if(send(sockid,resposta,strlen(resposta),0)==-1){
printf("Erro ao enviar mensagem\n");
close(sockid);}if(strcmp(resposta,"CONTINUAR")==0){continue;}}}while(strcmp(resposta,"SAIR")!=0);
close(sockid);}
Cliente/Servidor em C - Problemas
em C/C++
Postado
Eu estou criando uma aplicação cliente/servidor em C no ubuntu. O propósito é bem simples, saber se vale mais a pena alugar ou vender um imóvel, o usuário digita o valor do aluguel, os meses que irá alugar e o valor que irá vender e o servidor faz as contas e devolve o resultado. Tudo está dentro de um do while para ficar infinito, no final o usuário digita CONTINUAR para testar outros valores e SAIR para encerrar a conexão. Mas está com um problema que não consigo identificar. A primeira vez que comparamos valores, o servidor retorna o resultado correto(alugar ou vender), porém a partir da segunda vez ao digitar CONTINUAR, ele sempre retorna resultados errados. Eu suspeito que esteja armazenando dados na variáveis erradas a partir da segunda vez, coloquei uns prints no meio do código para mostrar os valores e tem divergência.E também tentei zerar as variáveis no começo e usar vários bzero e fflush, mas sem resultado. Mas não tenho certeza de nada. Podem me ajudar?
CÓDIGO DO CLIENTE:
CÓDIGO DO SERVIDOR: