p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 12
    Points : 3
    Points
    3

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 12
    Points : 3
    Points
    3

    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
    Responsable Modération
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 996
    Points : 16 846
    Points
    16 846

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 12
    Points : 3
    Points
    3

    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
    Réponses: 1
    Dernier message: 03/04/2009, 09h05
  2. Client/Serveur Socket, envoyer un message précis
    Par Chyokyka dans le forum Débutant
    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