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

C++ Discussion :

Envoi/Reception d'une structure en UDP


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut Envoi/Reception d'une structure en UDP
    Bonjour à tous,

    Je tente d'envoyer une structure du type suivant en UDP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct MaStruct{
    	unsigned long int id;
    	int id2;
    	int id3;
    	DWORD tab[16384];
    };
    Lors de la réception, j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    recvfrom(_sock,(char*)&this->_data,sizeof(this->_data),0,(SOCKADDR*)&_sin,&this->_sinsize);
    Mais je ne recois rien... Parcontre si je retire le DWORD tab[16384]; de ma structure, je n'ai pas de soucis (retrait à l'emission et la reception). quelqu'un a-t-il une idée de comment palier se soucis ?

    Merci
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 16
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Salut,

    Je pense que tab est un pointeur, donc ce que tu reçois à la place des 16384 caractères est simplement une adresse mémoire, qui sur la machine de réception correspond à tout autre chose.

    De plus, fais attention avec ce genre de manip (convertir la structure en void*) à ce que le compilateur des deux côtés (client/serveur) est le même.

  3. #3
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Je crois que la taille d'un datagramme UDP est limité à 65535, or avec 16384 DWORD tu dépasses déjà la limite.

    Citation Envoyé par Dreambeliever Voir le message
    De plus, fais attention avec ce genre de manip (convertir la structure en void*) à ce que le compilateur des deux côtés (client/serveur) est le même.
    +1

  4. #4
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Bonsoir,
    C'était résolu avant que je revienne sur le forum, effectivement ma structure était plus grosse que les 65535 (taille de 65548 visiblement).
    J'ai coupé en deux et plus de soucis.

    Cordialement,

    F-k-z
    GNU/Linux c'est une question de VI ou de MORE.
    http://www.goodbye-microsoft.com
    "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p

    Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
    Le tag et la ne sont pas fait que pour le décor, pensez-y !
    R.I.P. F-k-z 13/06/2006 - 12/10/2011
    *Linux est convivial, il est juste très sélectifs pour ses amis.

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

Discussions similaires

  1. Reception d'une structure via un socket en java
    Par mlboua dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/05/2014, 15h59
  2. Envois et recevoir une structure par référence ?
    Par panthere noire dans le forum Débuter
    Réponses: 8
    Dernier message: 04/03/2010, 17h38
  3. [C#] Envoi d'une structure par un(e) socket
    Par joprog dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/03/2007, 11h29
  4. Envoi/Reception vers/depuis une base SQL
    Par TocTocKiéLà? dans le forum MFC
    Réponses: 2
    Dernier message: 31/10/2005, 19h14
  5. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 15h47

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