ipascual
Messages postés28Date d'inscriptionsamedi 29 avril 2006StatutMembreDernière intervention15 janvier 2007
-
30 nov. 2006 à 19:45
ipascual
Messages postés28Date d'inscriptionsamedi 29 avril 2006StatutMembreDernière intervention15 janvier 2007
-
4 déc. 2006 à 19:44
Bonjour,
Je suis en train de faire un client en java, et un serveur avec C++. J`ai pu initialiser les connexions via des sockets , et pour ca il y a pas de probleme. Le client java, il est capable d`envoyer des informations, et le serveur C++ envoye et recoit.
Le probleme que j`ai c`est que quand le serveur C++ envoye des donnes vers le client Java, il n`arrive pas a a lire les informations en utilisant in.readLine(); ( le lecteur conventionnel). Il s`arrete la.
A mon avis, ca doit etre un probleme a niveau des decallages des bits entre C++ et Java, mais j`arrive pas a trouver une solution qui me permette avoir une conversation aller-retour (serveur et client peuvent lire et recevoir des donnees). Apparentment, ce probleme ne peut etre resolu qu`apartir la modification du code serveur C++(actuellement, send(csock,"123",3,0);, pour envoyer la chaine 1,2,3...)
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 4 déc. 2006 à 17:17
Essaie ceci en C
send(socket, "123\n\r", 5,0 ); a moins que ce soit send(socket, "123\r\n", 5,0); j'ai un blanc la pardon :S
Mais je peux presque te garantir que sa va fonctionner.
En faite c'est que Java ne lit la ligne que si et seulement si elle contient un retour de chariot Windows à la fin (caractère 13 suivit de 10). Donc si tu ajoute le retour de chariot par \n\r (ou l'inverse) sa va fonctionner.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201624 30 nov. 2006 à 20:19
As tu essayé l'interface :
[file:///C:/j2sdk1.4.2_05/docs/api/java/io/InputStreamReader.html InputStreamReader], An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified [file:///C:/j2sdk1.4.2_05/docs/api/java/nio/charset/Charset.html
ipascual
Messages postés28Date d'inscriptionsamedi 29 avril 2006StatutMembreDernière intervention15 janvier 2007 30 nov. 2006 à 20:26
Celui que j`utilise avec Java, Client c`est :
in= new BufferedReader( new InputStreamReader (sock.getInputStream()));
Pour ce qui concerne le serveur C++, j`utilise le int rv=recv(csock,buffer,sizeof(buffer),0); pour recevoir, et send(csock,reponse,sizeof(reponse),0); pour ecrire.
Pourrais tu m`expliquer comment je pourrais faire pour essayer ces interfaces-la? (genre, un exemple...)
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201624 30 nov. 2006 à 20:51
Dans le constructeur de InputStreamReader(input, charset)
En fait, java utilise par defaut UTF-16 unicode
donc essayes "UTF-8" ou
<tt>"US-ASCII"</tt>
[file:///C:/j2sdk1.4.2_05/docs/api/java/io/InputStreamReader.html#InputStreamReader(java.io.InputStream, java.nio.charset.Charset) InputStreamReader]([file:///C:/j2sdk1.4.2_05/docs/api/java/io/InputStream.html InputStream] in, [file:///C:/j2sdk1.4.2_05/docs/api/java/nio/charset/Charset.html Charset] cs)
Create an InputStreamReader that uses the given charset.
ipascual
Messages postés28Date d'inscriptionsamedi 29 avril 2006StatutMembreDernière intervention15 janvier 2007 30 nov. 2006 à 21:26
Merci beaucoup pour ton aide. Malheureusement, j`ai change la configuration charset de java, mais il ne marche pas encore.Il n`y aurait pas moyen de changer a travers du serveur C++?