Ir ao conteúdo
  • Cadastre-se
Reberth Siqueira

C RESOLVIDO erro ao receber os dados do server - socket programming

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom! Nem tive tempo de olhar

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, arfneto disse:

Muito bom! Nem tive tempo de olhar

hehe to aprendendo a usar  google....

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Reberth Siqueira disse:

hehe to aprendendo a usar  google....

A documentação da Microsoft --- MSDN --- é impressionante.

E da IBM também.

E o site do StackOverflow.

E o cplusplus.com

E o YouTube :D 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...