Ir ao conteúdo
  • Cadastre-se

Socket recv - send


Plástico Bolha

Posts recomendados

Oi, eu estou tendo problemas com um simples server e um simples cliente.

Os 2 compilam, mas não consigo estabelecer conexão entre eles. Se alguem souber onde esta o erro por favor me fale. Desde ja agradeço a paciência :lol:.

// CLIENTE.C ####
#include <stdio.h>
#include <winsock.h>
#include <conio.h>
#include <windows.h>
#include <string.h>

WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;
int main()
{
char buffer[1024];
char buffer2[1024];
int bytes;
if(WSAStartup(MAKEWORD(1,1),&data) == SOCKET_ERROR)
{
printf("Erro ao inicializar o winsock");
getch();
return 0;
}
if((winsock = socket(AF_INET,SOCK_STREAM,0)) == SOCKET_ERROR)
{
printf("Erro ao criar socket");
getch();
return 0;
}
printf("Socket iniciado!!!\n");
sock.sin_family= AF_INET;
sock.sin_port = htons(1234);
sock.sin_addr.s_addr = inet_addr("187.7.150.109");

if(connect(winsock,(SOCKADDR*)&sock,sizeof(sock)) == SOCKET_ERROR){ // Não passo daqui !!! Não consigo me conectar com o server
printf("Erro ao se conectar!!!\n"); // Não passo daqui !!! O
getch();
return 0;
}
printf("Conexao estabelecida!!!\n");

while(1){
Sleep(1);
printf("Para: ");
gets(buffer);
strcat(buffer,"\r\n");
send(winsock, buffer, strlen(buffer), 0);
printf("\n");
memset(buffer2, 0, 1024);
bytes = recv(winsock, buffer2, 1024, 0);
getch();
if(bytes == -1){
printf("Conexao perdida!!!\n");...
closesocket(winsock);
WSACleanup();
getch();
return 0;
}
printf("De: %s", buffer2);
printf("\n");
}
closesocket(winsock);
WSACleanup();
return 0;
}

// SERVER.C  ###
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#include <windows.h>

WSADATA data;
SOCKET winsock;
SOCKADDR_IN sock;
char buffer[1024];
char buffer2[1024];
int bytes;

int main()
{
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(1234);

if(bind(winsock,(SOCKADDR*)&sock,sizeof(sock)) == SOCKET_ERROR){
printf("Erro ao abrir a porta no sistema (Erro em bind)!!!");
return 0;
}

listen(winsock, 1);

printf("Aguardando conexao!!!\n\n"); //
while((winsock = accept(winsock, 0 ,0)) == SOCKET_ERROR) // Não sai desse while ... Por algum motivo o cliente acima não consegue se conectar !!!
{
Sleep(1);
}

// Não consigo chegar nessa parte pois estou travado na linha de cima ...
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!!!\n");
closesocket(winsock);
WSACleanup();
getch();
return 0;
}
printf(buffer2);
printf("To: ");
gets(buffer);
printf("\n");
strcat(buffer,"\r\n");
send(winsock, buffer, strlen(buffer), 0);
}
closesocket(winsock);
WSACleanup();
return 0;
}

Por favor se alguem puder ajudar ficarei muito feliz =P ...

Resolvi !!! Simplesmente o ip que o site "http://meuip.datahouse.com.br/" me dava não era válido para o cliente se conectar com o servidor. Eu consegui um ip válido da minha máquina através de "CMD - ipconfig". O ip que o site me dava era diferente do ip que eu obtive com o ipconfig. Estou só falando isso para que outros não percam horas tentando achar um erro no programa quando estava no ip =P . . .

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

APRENDA A MONTAR COMPUTADORES!

montagem2022-capa-peq.jpg

 

CLIQUE AQUI E BAIXE AGORA MESMO!