Autor Tema: No funciona el envío de cadenas de texto usando sockets (SOLUCIONADO)  (Leído 3161 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Ernie-

  • PIC12
  • **
  • Mensajes: 56
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 =)
« Última modificación: 24 de Febrero de 2009, 02:57:22 por Ernie- »
La mitad del mundo tiene algo que decir, pero no puede; la otra mitad no tiene nada que decir, pero no calla. Robert Lee Frost.

Desconectado Ernie-

  • PIC12
  • **
  • Mensajes: 56
Re: No funciona el envío de cadenas de texto usando sockets
« Respuesta #1 en: 23 de Febrero de 2009, 02:57:41 »
Ya está solucionado =)
La mitad del mundo tiene algo que decir, pero no puede; la otra mitad no tiene nada que decir, pero no calla. Robert Lee Frost.