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 :

Discussion client serveur, socket TCP


Sujet :

Réseau C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Discussion client serveur, socket TCP
    Bonjour,

    Le probleme se situe au niveau de l'affichage de mon message, on en communication client vers serveur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Cote serveur
    char MessageRecv[100];
    read(fdaccept,MessageRecv,sizeof(MessageRecv));
    printf("%s",MessageRecv);
    // Coté client
    char MessageEnvoi[]="test";
    send(sockfd,MessageEnvoi,strlen(MessageEnvoi),0);
    Mon message test s'affiche correctement mais j'ai droit a des carcteres(spéciaux) en plus:
    test�zH`J��J���J��TzH

    Donc question, d'ou vienne ces caracteres et comment y remédier?

    Merci de m'éclairer.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Solution
    Bon j'ai tellement honte d'avoir posté cette question mais bon je laisse la discussion au cas où une autre personne serait dans le meme cas.

    La solution: initialiser son tableau a zéro ><
    char MessageRecv[100]="0";

    c'est tout.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Bonjour,

    C'est un poil plus subtil. Lorsque tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char MessageRecv[100]="0";
    … tu n'initialises pas le tableau à zéro, mais tu le remplis avec la chaîne que tu passes. Donc, la première position contient le caractère « 0 » (code ASCII 48) puis le terminateur (code ASCII 00). Il se trouve toutefois que la norme précise que dans le cas d'une initialisation avec une chaîne entre guillemets ou une liste de valeurs entre accolades, une fois leur fin atteinte, les éléments du tableau restants sont initialisés de la même façon que les objets à stockage statique, qui eux-mêmes sont initialisés à zéro. Donc, dans les faits, ton tableau sera quand même rempli de zéros.

    Par contre, read() et send() peuvent envoyer n'importe quel type de données et, donc, pas forcément des chaînes formattés à la mode C. Il faut donc récupérer la valeur de retour de read() qui, selon qu'elle est positive, nulle ou négative, t'indique respectivement une erreur, une fin de transfert ou la longueur des données que tu viens de recevoir.

    C'est important parce qu'il est tout-à-fait possible, lorsque ta chaîne est longue, que tu reçoives tes données en plusieurs fois.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, pour t'es explications c'est gentil.

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

Discussions similaires

  1. programme client serveur mode TCP/UDP en java
    Par ouss01 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 03/04/2009, 09h05
  2. Client/Serveur Socket, envoyer un message précis
    Par Chyokyka dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2009, 17h59
  3. Application client/serveur sockets
    Par loreleï85 dans le forum Réseau
    Réponses: 4
    Dernier message: 05/01/2007, 12h44
  4. Réponses: 2
    Dernier message: 23/10/2006, 13h32
  5. Question client-serveur socket
    Par Lex99 dans le forum Développement
    Réponses: 3
    Dernier message: 07/02/2006, 09h01

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