Boa tarde, preciso fazer um servidor enviar uma resposta automática a um cliente em C.
Porém não faço ideia de como realizar isso.
Ex: Cliente digita: Olá
Servidor responde: Olá tudo bem?
Já tentei utilizando if e switch, porém sem sucesso!
Alguem poderia me ajudar?
Segue código que estou utilizando no cliente e no servidor:
Servidor:
#include "retornadata.h" // biclioteca para a data, colocar o arquivo na mesma pasta
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#include <windows.h> //Repara que utilzaremos este header para utilizarmos a função Sleep();
#include <string.h>
WSADATA Data;
SOCKET winsock;
SOCKADDR_IN sock;
char buffer[1024];
char buffer2[1024];
int bytes;
int main()
{
char data_sistema[100];
sprintf(data_sistema,"%s",data());
printf("%s\n",data_sistema);
if(WSAStartup(MAKEWORD(1,1),&Data)==SOCKET_ERROR)
{
printf("Erro ao inicializar o winsock");
return 0;
}
if((winsock = socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR)
{
printf("Erro ao criar socket");
return 0;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(2530);
if(bind(winsock,(SOCKADDR*)&sock,sizeof(sock))==SOCKET_ERROR)
{
printf("Erro colocar utilizar a funcao BIND");
return 0;
}
listen(winsock,1);
while((winsock = accept(winsock,0,0))==SOCKET_ERROR)
{
Sleep(1);
}
printf("Cliente conectado!\n");
while(1)
{
Sleep(1);
memset(buffer2,0,1024);
bytes=recv(winsock,buffer2,1024,0);
if(bytes==-1)
{
printf("Conexão perdida");
getch();
return 0;
}
printf(buffer2);
printf("Digite uma mensagem:\n");
printf("2||%s|",data_sistema);
gets(buffer);
strcat(buffer,"\r\n");
send(winsock,buffer,strlen(buffer),0);
}
getch();
closesocket(winsock);
WSACleanup();
return 0;
}
-----------------------------------------------------------------------------------------------------------------------------------------------
Cliente:
#include "retornadata.h" // biclioteca para a data, colocar o arquivo na mesma pasta
#include <stdio.h>
#include <winsock.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
WSADATA Data;
SOCKET winsock;
SOCKADDR_IN sock;
char buffer[1024];
char buffer2[1024];
int bytes;
int main()
{
char data_sistema[100];
sprintf(data_sistema,"%s",data());
printf("%s\n",data_sistema);
if(WSAStartup(MAKEWORD(1,1),&Data)==SOCKET_ERROR)
{
printf("Erro ao inicializar o winsock");
return 0;
}
if((winsock = socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR)
{
printf("Erro ao criar socket");
return 0;
}
sock.sin_family=AF_INET;
sock.sin_port=htons(2530);
sock.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(winsock,(SOCKADDR*)&sock,sizeof(sock))==SOCKET_ERROR)
{
printf("Erro ao se conectar");
return 0;
}
printf("Conectado!\n");
while(1)
{
Sleep(1);
printf("Digite uma mensagem:\n");
printf("1||%s|",data_sistema);
gets(buffer);
strcat(buffer,"\r\n");
send(winsock,buffer,strlen(buffer),0);
memset(buffer2,0,1024);
bytes=recv(winsock,buffer2,1024,0);
if(bytes==-1)
{
printf("Conexão perdida");
getch();
return 0;
}
printf(buffer2);
}
getch();
closesocket(winsock);
WSACleanup();
return 0;
}
socket.zip