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.

Si alguien me podria ayudar.
Gracias, chau.