IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Communication C/Java par socket


Sujet :

Réseau C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 75
    Par défaut Communication C/Java par socket
    bonsoir,
    transmission des entienrs entre C et java a l'aide sockets ne fonctionne pas!!
    Sur C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fprintf(stdout,"Nombre joueur en ligne:%d\n",nombreJoueur);
    	if(send (p_cli->sock,&nombreJoueur, sizeof(int), 0)==-1)
    		perror("Sock nombre joueur");
    Sur Java :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (true) {
    				String toSend = iReader.readLine();
     
    				toSend += '\n'; 
    				writer.write(toSend);
    				writer.flush();
    			}

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par midotek Voir le message
    Pour les chaines de caractères il n'y a pas de problème mais pour les entiers ça ne marche pas !
    Mais encore ?

    La façon la plus sûre de transmettre des données d'un système à un autre reste le texte : on a pas à se préoccuper de l'endianness du processeur, de la taille des types, des encodages...

    A mon avis, le mieux serait de convertir l'entier à transmettre en chaine (sprintf(foo, "%d", i)

  3. #3
    Membre très actif

    Inscrit en
    Juillet 2008
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 186
    Par défaut
    Bonjour,

    Attention, la fonction send prend comme deuxième paramètre un pointeur vers les données à envoyer. Il faut corriger comme cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    send (p_cli->sock,&nombreJoueur, sizeof(int), 0)==-1
    Ensuite, côté java, l'appel à la fonction readLine me laisse penser que cette fonction va attendre jusqu'à ce qu'elle reçoive un caractère de fin de ligne. Or aucun n'est envoyé. Cette fonction ne retourne peut-être jamais ...

    De plus, je me permet une petite remarque. Cette manière d'envoyer des bytes en binaire sur une socket ne fonctionnera pas si les deux machines qui communiquent n'ont pas la même taille de int, ni si elles n'ont pas la même endianness. Il est beaucoup plus portable d'envoyer du texte sur des socket réseau.

    Didier

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 75
    Par défaut
    merci pour vos reponse! alors je vais utiliser que des chainnes de caratères

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La communication par socket en Java
    Par akreem dans le forum NetBeans
    Réponses: 1
    Dernier message: 27/10/2009, 10h41
  2. Réponses: 5
    Dernier message: 29/03/2007, 22h26
  3. communication C++ C# par socket
    Par greenzephyr dans le forum C++/CLI
    Réponses: 2
    Dernier message: 16/11/2006, 10h12
  4. [Omnis] Communication par Socket
    Par y0p dans le forum WinDev
    Réponses: 4
    Dernier message: 15/06/2006, 09h02
  5. Problème de communication par sockets
    Par Linio dans le forum Entrée/Sortie
    Réponses: 33
    Dernier message: 06/05/2006, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo