elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Septiembre 2008, 01:14  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Sockets c++ send-recv
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Sockets c++ send-recv  (Leído 414 veces)
germandc

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Sockets c++ send-recv
« en: 01 Abril 2008, 06:43 »

Hola, estoy haciendo un cliente y un servidor en c++ en windows, lo unico que hace es conectarse y el servidor le manda un mensaje al cliente, el problema es que al cliente no le llegua bien el mensaje, por el lado del servidor pareciera que funciona todo, pero a la hora de mostrar el mensaje que recibio el cliente no lo muestra.
Estos son los codigos:
//servidor
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock.h>
#define PUERTO 6000
#define IP "127.0.0.1"

int main()
{
WORD winsock;
WSADATA datos;
SOCKET escucha;
SOCKET comunicacion;
struct sockaddr_in servidor;
int tam_sockaddr=sizeof(struct sockaddr);
char *mensaje="mensaje enviado";
winsock=MAKEWORD(1,1);
if(WSAStartup(winsock, &datos))
printf("Error: Problemas al inicializar winsock \n");
else
{
escucha=socket(AF_INET, SOCK_STREAM, 0);
if(escucha==-1)
printf("Error: Problemas al crear el socket \n");
else
{
servidor.sin_family=AF_INET;
servidor.sin_port=htons(PUERTO);
servidor.sin_addr.s_addr=inet_addr(IP);
if((bind(escucha, (struct sockaddr *)&servidor, sizeof(servidor)))==-1)
printf("Erro: Problemas al asociar puerto e ip al socket \n");
else
{
listen(escucha, 1);
printf("Esperando conexiones entrantes... \n");
comunicacion=accept(escucha, (struct sockaddr *)&servidor, &tam_sockaddr);
closesocket(escucha);
printf("Enviando mensaje... \n");
send (escucha,mensaje, strlen(mensaje), 0);
closesocket(comunicacion);
}
}
WSACleanup();
}

system("PAUSE");
return (EXIT_SUCCESS);
}

//cliente
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock.h>
#define IP "127.0.0.1"
#define PUERTO 6000

int main()
{
WORD winsock;
WSADATA datos;
SOCKET comunicacion;
struct sockaddr_in servidor;
int estado_conexion;
static char buf[2048];

winsock=MAKEWORD(1,1);
if(WSAStartup(winsock, &datos))
printf("Error: Problemas al inicializar winsock \n");
else
{
comunicacion=socket(AF_INET, SOCK_STREAM, 0);
if(comunicacion==-1)
printf("Error: Problemas al crear el socket \n");
else
{
servidor.sin_family=AF_INET;
servidor.sin_port=htons(PUERTO);
servidor.sin_addr.s_addr=(inet_addr(IP));

estado_conexion=connect(comunicacion, (struct sockaddr *)&servidor, sizeof(servidor));
if(estado_conexion==-1)
printf("Error: No se puede conectar a \"%s\" \n", IP);
else
{
printf("Se conecto con el servidor\n");
recv(comunicacion,buf,sizeof(buf), 0);
printf("Mensaje recibido: %s \n", buf);
}
closesocket(comunicacion);
}

WSACleanup();
}

system("PAUSE");
return (EXIT_SUCCESS);
}

Bueno esos son los 2 codigos, no me tira error ni warning, no tengo idea que sera, seguramente es un pequeño gran error. ;D

Si alguien me podria ayudar.

Gracias, chau.
En línea
germandc

Desconectado Desconectado

Mensajes: 30



Ver Perfil WWW
Re: Sockets c++ send-recv
« Respuesta #1 en: 01 Abril 2008, 18:38 »

Buenas, me respondo a mi mismo xD.
El error era una animalada miren:
comunicacion=accept(escucha, (struct sockaddr *)&servidor, &tam_sockaddr);
closesocket(escucha);
printf("Enviando mensaje... \n");
send (escucha,mensaje, strlen(mensaje), 0);

Ese era el error el servidor se estaba mandando el mensaje a si mismo xP.

Bueno Chaus.
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC