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 :

Write, Socket et erreurs "EILSEQ"


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Write, Socket et erreurs "EILSEQ"
    Bonjour tout le monde,

    Je suis actuellement en train d'écrire un petit soft qui doit se connecter a un petit serveur pour faire des petites choses ^^

    J'ai écris ma structure à envoyer, la voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct
    {
      char                        begin_trame;
      char                        id_mess[3];
      unsigned char               stx; //0x02
      Eligi_Header                header;
      Eligi_Parameters_68 parameters;
      unsigned char               etx; //0x03
    } __attribute__ ((packed)) Eligi_68;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct
    {
      char tm_smtp[14];
      char v_hdr[2];
      char typ_com; 
      char typ_ms; 
      char xxx[8];
      char yyy[8];
      char zzz[8];
      char n_trans[8];
      char id_mess[4];
      char n_use[8]; // non utilisé
      char lg_var[5];
    } __attribute ((packed)) Eligi_Header;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct
    {
      char ind_id;
      char id_a[8];
      char id_m[14];
      char id_src;
    } __attribute ((packed)) Eligi_Parameters_68;
    Malheureusement, lorsque j'essayer d'envoyer à en TCP au serveur distant ma jolie petite structure avec ses jolies petites données grâce à la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(soc, sc, sizeof(Eligi_68))
    J'ai en retour une jolie petite érreure 84 correspondant à EILSEQ.
    Sous ce terme barbare ce cache la chose suivante:

    [EILSEQ]
    Illegal byte sequence A wide-character code has been detected that does not correspond to a valid character, or a byte sequence does not form a valid wide-character code.
    Quelqu'un aurai t il déjà rencontré ce genre de problème ? Ou tout bètement aura une astuce pour me mettre sur la voix de la résolution ?

    Zigo ^^

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Write, Socket et erreurs "EILSEQ"
    Citation Envoyé par zigoo
    Je suis actuellement en train d'écrire un petit soft qui doit se connecter a un petit serveur pour faire des petites choses ^^

    J'ai écris ma structure à envoyer, la voici:
    <...>
    [EILSEQ]
    Illegal byte sequence A wide-character code has been detected that does not correspond to a valid character, or a byte sequence does not form a valid wide-character code.
    Est-ce que le mot 'portabilité' évoque quelque chose pour toi ? Vu que tu utilises des astuces non portables, j'ai comme un doute...

    Pour transférer des données de façon fiable et portable, il faut se conformer strictement au format 'réseau' tel qu'il doit être spécifié par un doculent indépendant de tout langage de réalisation et émettre un tableau de bytes préalablement remplis un par un selon les regles de l'art...

    Une structure ne convient pas.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 21
    Points : 12
    Points
    12
    Par défaut Re: Write, Socket et erreurs "EILSEQ"
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par zigoo
    Je suis actuellement en train d'écrire un petit soft qui doit se connecter a un petit serveur pour faire des petites choses ^^

    J'ai écris ma structure à envoyer, la voici:
    <...>
    [EILSEQ]
    Illegal byte sequence A wide-character code has been detected that does not correspond to a valid character, or a byte sequence does not form a valid wide-character code.
    Est-ce que le mot 'portabilité' évoque quelque chose pour toi ? Vu que tu utilises des astuces non portables, j'ai comme un doute...

    Pour transférer des données de façon fiable et portable, il faut se conformer strictement au format 'réseau' tel qu'il doit être spécifié par un doculent indépendant de tout langage de réalisation et émettre un tableau de bytes préalablement remplis un par un selon les regles de l'art...

    Une structure ne convient pas.
    Utilisez une structure n'est peut être pas portable, ni même la règle dans ce genre de situation, mais j'utilise cela depuis le début et cela fonctionne sans problème.

    Le faites est que ici j'ai du passer à coté de quelquechose qui me mène à une erreur.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Voici ma trame à envoyer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    53 30 36 38  02 32 30 30   36 30 33 31  37 31 35 35            S068.20060317155
    36 32 38 30  32 32 31 53   49 45 42 45  4C 20 20 53            6280221SIEBEL  S
    49 45 42 45  4C 20 20 53   49 45 42 45  4C 30 31 31            IEBEL  SIEBEL011
    32 33 34 35  35 35 35 30   30 36 38 20  20 20 20 20            23455550068
    20 20 20 30  30 30 32 34   32 30 30 30  30 30 30 32            0002420000002
    34 30 30 30  30 30 30 30   30 30 30 30  30 30 30 30            4000000000000000
    03                                                             .
    Elle a quoi d'illégale ? :p

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