Ir ao conteúdo
  • Cadastre-se

C erro ao receber os dados do server - socket programming


Ir à solução Resolvido por Reberth Siqueira,

Posts recomendados

E ai! Boa noite!

 

Eu to tentando aprender socket programming, mas eu to com problema para receber os dados do servidor. O código é:

 

//-- server.c

/*
	Get IP address from domain name
*/

#include<stdio.h>
#include<winsock2.h>

//#pragma comment(lib,"ws2_32.lib") //Winsock Library

int main(int argc , char *argv[])
{
	WSADATA wsa;
	SOCKET s , new_socket;
	struct sockaddr_in server , client;
	int c;
	char* message,server_reply[2000];
	int recv_size;

    //inicializa win sock
	printf("\nInitialising Winsock...");
	if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
	{
		printf("Failed. Error Code : %d",WSAGetLastError());
		return 1;
	}

	printf("Initialised.\n");

    //Create a socket
	if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET)
	{
		printf("Could not create socket : %d" , WSAGetLastError());
	}

	printf("Socket created.\n");

	//Prepare the sockaddr_in structure
	server.sin_family = AF_INET;
	server.sin_addr.s_addr = inet_addres("127.0.0.1");
	server.sin_port = htons( 8888 );

	//Bind - Criação da sessão para conexão
	if( bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR)
	{
		printf("Bind failed with error code : %d" , WSAGetLastError());
	}

	puts("Bind done\n");

    //Fica aguardando solicitacoes de conexao
	listen(s,3);

	c = sizeof(struct sockaddr_in);

    //Encaminha os dados enquanto existe conexao
	while(new_socket = accept(s , (struct sockaddr *)&client, &c) != INVALID_SOCKET){
        puts("Connection accepted");
        message = "helo connection client";
        send(new_socket , message , strlen(message) , 0);
	}

	if (new_socket == INVALID_SOCKET)
	{
		printf("accept failed with error code : %d" , WSAGetLastError());
	}

	closesocket(s);

	return 0;

}
//--client
/*
	Initialise Winsock
*/

#include<stdio.h>
#include<WinSock2.h>

int main(int argc, char *argv[])
{
    int teste;
    WSADATA  Winsockdata;
    SOCKET s;
    struct sockaddr_in addr;
    char* message, server_reply[2000];
    int recv_size;
// Inicia o Windows Stock
    teste = WSAStartup(MAKEWORD(2,2),&Winsockdata);

    printf("\nInitialising Winsock...\n");
    if (teste != 0)
    {
        printf("Failed. Error Code : %d",WSAGetLastError());
        return 1;
    }

    printf("Initialised.\n");

// Cria o socket para conexao
    if((s = socket(AF_INET, SOCK_STREAM, 0 )) == INVALID_SOCKET)
    {
        printf("Could not create socket : %d", WSAGetLastError());
    }

    printf("Socket created.\n");

    // Configura parametros de endereço e porta do socket para conexão com o server
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
	addr.sin_port = htons( 8888 );

	//Conexão entre client-server

	if (connect(s , (struct sockaddr *)&addr , sizeof(addr)) < 0)
	{
		printf("connect error");
		return 1;
	}

	printf("Connected \n");

    // Recebe dados do servidor
    recv(s,server_reply,2000,0);

	printf("Reply received\n");

    puts(server_reply);
    // Finaliza sessão
	closesocket(s);
    WSACleanup();

    return 0;
}

 

 

Eu esperava que o client.c funcionasse assim:

  • Inicia sessão WinSock; -- OK
  • Cria socket -- OK;
  • Configura conexão (IP e Porta) -- OK;
  • Realiza conexão -- OK;
  • Recebe os dados do servidor -- N/OK

 

Mas ele não está recebendo os dados do servidor, mas também não retorna um erro :(

 

 

Alguem que conhece pode me ajudar? Pls

 

 

fotos:

(SERVER SIDE) teste.c:

 

image.png.9f1234df7ee12b8131d942fa98169c49.png

 

(CLIENT SIDE) client.c :

 

image.png.d929d85c46060288d00d19fd2fa56791.png

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...