Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/10/2007, 16:53
torpecito
 
Fecha de Ingreso: octubre-2007
Mensajes: 10
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: sockets entre c y java

Cita:
Iniciado por aeb_asturias Ver Mensaje
Creo que ya se donde esta el problema pero nose como se soluciona.

Antes de enviar el contenido del fichero , envio una cadena por el socket con este codigo:
Código:
char *dato="RF\n";
write(s,dato, sizeof dato);
El problema está en el sizeof(dato). dato es un puntero, y su sizeof es el tamaño de un puntero, no la longitud de la cadena a enviar. Si no me equivoco, casi seguro que en el sistema donde estás ejecutando, sizeof(dato)=4 (es decir, un puntero ocupa 4 bytes).

Por lo tanto, le estás diciendo a write que escriba cuatro bytes. El primero es R, el segundo es F, y luego \n, que al escribir en algo que no es un archivo de texto, es sólo un byte. El cuarto byte de la cadena es el carácter terminador \0, que a lo mejor es lo que se te muestra como "esc" en Java.

La conclusión es que a write le tienes que pasar la longitud de la cadena a imprimir, no el tamaño del puntero que apunta a la cadena.

¿Puedes probar esto?

Código:
char *dato="RF\n";
write(s,dato, strlen(dato));