quel q'un peut m'aider j'arrive pas a envoyer un string du client qui est en java ver le serveur qui est en c
j'ai arriver a ce que le client ce connecte au serveur et peut recevoir une chaine de caractaires de serveur
merci d'avence
quel q'un peut m'aider j'arrive pas a envoyer un string du client qui est en java ver le serveur qui est en c
j'ai arriver a ce que le client ce connecte au serveur et peut recevoir une chaine de caractaires de serveur
merci d'avence
Précise d'avantage ton problème en postant du code si possible. Avec une description aussi vague de ton problème, ça va être difficile de t'aider.
le thred loncer lancer aprer acceptation par le serveur en c :
l'action d'une bouton du client en java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void *requete(void *arg){ int nb,sock,r=-1; char wbuffer[256]="juste un essai\n\0",rbuffer[256]; sock=(int)arg; r = read(sock,rbuffer,strlen(rbuffer)); if(r<0)perror("recv"); printf("contenu: %s\n",rbuffer); write(sock,wbuffer,strlen(wbuffer)); printf("transmition effectuer, mon tid est %u\n",pthread_self()); close(sock); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try{ byte[] b = "sdfvg".getBytes(); InetAddress addr=InetAddress.getByName("localhost"); int port = 1986 ; Socket socket = new Socket(addr,port); DataInputStream in = new DataInputStream( new BufferedInputStream(socket.getInputStream())); /*PrintStream out = new PrintStream( new BufferedOutputStream(socket.getOutputStream()));*/ PrintWriter out = new PrintWriter( socket.getOutputStream()); out.print("envoi".getBytes("US-ASCII")); String str = in.readLine(); System.out.println(str); }catch(Exception e){ System.err.println("erreur socket : "+e); } }
Ça aurait aussi été une bonne idée de nous donner le résultat.
Voilà deux choses qui me choquent :
Dans ton code C :
Tu fais un appel à read, et comme taille max tu donnes strlen(rbuffer). Or, rbuffer est un tableau de char que tu viens d'allouer sur la pile. Son contenu est inconnu. Quoi qu'il en soit, strlen(rbuffer) peut renvoyer n'importe quoi, mais sauf hasard incroyable, pas la taille de rbuffer. Je conseille de mettre 256 à la place.
Dans ton code Java :
Tu envoies des octets, représentants une chaîne de caractères, mais tu n'envoies pas de "marqueur" de fin de chaîne. Le programme receveur ne peut pas savoir quand s'arrête la chaîne. Il faudrait ajouter le marqueur utilisé habituellement en C, l'octet nul. Bref, envoyer la chaîne "envoi\0" au lieu de "envoi".
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
merci pour votre aide j'ai trouver la solution
just il faux faire "envoi".toCharArray()
Ah, oui. Aussi.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager