Sockets Java-C
Hola a todos,
estoy intentando comunicar un cliente java y un servidor C y me funciona...a medias. Mientras que no hay problemas cuando java manda mensajes, pues C los recibe bien, no puedo decir lo mismo al contrario. Si lo que manda el servidor C al Java es un mensaje sin mas, es decir, un char *mens = "HOLA"; no hay problema, se recibe bien, pero el problema es que quiero que mande el resultado de una funcion y no lo hace bien.
Este es un fragmento del codigo en C donde mando el mensaje
retval = send(msgsock,Getdata(Buffer,Buffer2, &db),sizeof(Buffer2),0);
donde la cabecera de Getdata es
char *Getdata(char *transaction, char *query, struct DBType *db)
y la forma en que recibo en java es
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
StringBuffer texto=new StringBuffer();
System.out.println("Entro en el if");
if ((str = in.readLine())!=null)
{
reference.printResult(str);
texto.append(str);
}
pero imprime el mensaje de antes del if y luego no sigue, como si no reconociera el caracter de fin de linea (de fin de mensaje). Alguien puede decirme por que? deberia añadir algo a la cadena de C para que java viera que ha acabado?
Muchas Gracias!!
estoy intentando comunicar un cliente java y un servidor C y me funciona...a medias. Mientras que no hay problemas cuando java manda mensajes, pues C los recibe bien, no puedo decir lo mismo al contrario. Si lo que manda el servidor C al Java es un mensaje sin mas, es decir, un char *mens = "HOLA"; no hay problema, se recibe bien, pero el problema es que quiero que mande el resultado de una funcion y no lo hace bien.
Este es un fragmento del codigo en C donde mando el mensaje
retval = send(msgsock,Getdata(Buffer,Buffer2, &db),sizeof(Buffer2),0);
donde la cabecera de Getdata es
char *Getdata(char *transaction, char *query, struct DBType *db)
y la forma en que recibo en java es
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
StringBuffer texto=new StringBuffer();
System.out.println("Entro en el if");
if ((str = in.readLine())!=null)
{
reference.printResult(str);
texto.append(str);
}
pero imprime el mensaje de antes del if y luego no sigue, como si no reconociera el caracter de fin de linea (de fin de mensaje). Alguien puede decirme por que? deberia añadir algo a la cadena de C para que java viera que ha acabado?
Muchas Gracias!!
