TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: Ernie- en 21 de Febrero de 2009, 14:05:01

Título: No funciona el envío de cadenas de texto usando sockets (SOLUCIONADO)
Publicado por: Ernie- en 21 de Febrero de 2009, 14:05:01
Buenas, no sé si sea el foro más adecuado para preguntar esto, pero teniendo en cuenta que es parte de mi proyecto con el PIC pues lo pondré aquí.

Ahí va mi problema, resulta que la cadena de texto que envío por el socket, no la recibo correctamente (creo que ni siquiera la recibo)

Tengo una aplicación hecha en flash que envía una cadena de texto por el socket (eso sí que sé que funciona correctamente) pero este código sólo recibe números (variables integer), al tratar de cambiarlo para que funcione con variables del tipo char pues.. no sirve.

¿Alguien sabe por qué?

Código: [Seleccionar]
#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; // version de Winsock
WSADATA datos; // Datos para inicializar winsock
SOCKET escucha; // Con este socket aceptamos las conexiones
SOCKET comunicacion; // Socket para enviar y recibir datos
struct sockaddr_in server; // Datos para la conexion
int tam_sockaddr=sizeof(struct sockaddr);
int num_enviado=1; 
int num_recibido; 
 
// Iniciar winsock
winsock=MAKEWORD(1,1);
if(WSAStartup(winsock, &datos))
printf("Error: Problemas al iniciar\n");
else
{
// Crer socket.
escucha=socket(AF_INET, SOCK_STREAM, 0);
if(escucha==-1)
printf("Error: Problemas creando socket\n");
else
{
server.sin_family=AF_INET;
server.sin_PUERTO=htons(PUERTO);
server.sin_addr.s_addr=inet_addr(IP); // IP en formato long
 
// Asociar IP & PUERTO al socket
if((bind(escucha, (struct sockaddr *)&server, sizeof(server)))==-1)
printf("Error: Problemas al asociar el PUERTO y la IP al socket\n");
else
{
listen(escucha, 1);
 
// Aceptar conexiones
printf("Esperando conexiones... \n");
comunicacion=accept(escucha, (struct sockaddr *)&server, &tam_sockaddr);
 
// No vamos a aceptar más conexiones, así que cerraremos el socket escucha
close(escucha);
 
// Enviamos el número y despues esperaremos a recibir datos del cliente
printf("Enviando número... \n");
send (escucha, (char *)&num_enviado, sizeof(num_enviado), 0);
printf("Recibiendo número... \n");
recv (escucha, (char *)&num_recibido, sizeof(num_recibido), 0);
 
printf("Numero enviado: %d \n", num_enviado);
printf("Numero recibido: %d \n", num_recibido);
 
// Cerrar socket
closesocket(comunicacion);
}
}
// Cerrar librería winsock
WSACleanup();
}
 
system("PAUSE");
return (EXIT_SUCCESS);
}

A ver si alguien arroja algo de luz al caso.

Saludos =)
Título: Re: No funciona el envío de cadenas de texto usando sockets
Publicado por: Ernie- en 23 de Febrero de 2009, 02:57:41
Ya está solucionado =)