Ir ao conteúdo
  • Cadastre-se

Socket


DiF

Posts recomendados

Oi, eu estou com uma dúvida, tenho um pequeno cliente e um pequeno servidor. Quando eu rodo os 2 (cliente e servidor) em um mesmo computador, eu consigo estabelecer conexão, mas quando eu rodo o cliente em um PC, e o servidor em ou PC, eu não consigo estabelecer conexão. Alguem sabe porque ?

Segue o cliente e o servidor:

// 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){
printf("Erro ao se conectar!!!\n");
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)
{
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!!!\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;
}

É realmente ele mudou a assinatura. Antes ele estava se auto promovendo .. dizendo: " quer se informatizar? faço "programas".. como desenvolvedor, isso é a mesma coisa que dizer: Sou programador e me procurem" rsrsrs

enfim ta resolvido :D

abraço

Resolvido.

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 TUDO SOBRE HARDWARE!

HARDWARE 2022

 

CLIQUE AQUI E BAIXE AGORA MESMO!