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 :

UDP Question protocol binaire


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 57
    Par défaut UDP Question protocol binaire
    Bonjour,

    Je développe actuellement une application client / serveur en UDP et j'ai quelques question

    Je veut envoyer des paquets de se type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    t_header p = {1, "lasdl", 3}
    t_toto s = {p, "coucou", 1, 34}
     
    t_header p = {2, "lqwd", 3}
    t_titi d = {p, "qwdqd",1,2,3,4}
    Donc des paquets de type différent avec un header commun. Suivant le premier byte du header je sait en quoi cast la suite du paquet, jusque la rien de sorcier.

    J'utilise donc pour envoyer ces paquet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sendto(socket, ...., (char*)&d, sizeof(t_titi), ...);
    Le problème viens du receive, j'essaye de lire un sizeof(t_header) mais la WSA retourne une erreur 10040.

    Ya t'il une solution simple pour connaitre la taille du paquet avant le receive ? Ou tout autre moyen pour recevoir le paquet proprement ? On à bien penser a receive dans un char* à la porc de la taille du plus gros buffer mais c'est sale :p

    Merci, si j'ai pas été assez précis n’hésitez pas

  2. #2
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Bonjour,

    Pour ma part, j'ai jamais vu une fonction de ce genre : pouvant compter la taille d'un paquet avant sa lecture

    Je suis presque sûr que toutes les APIs utilisent la "sale" solution !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 57
    Par défaut
    Pourtant dans un datagramme IP il y à une entête avec:

    Port Source (16 bits) Port Destination (16 bits)
    Longueur (16 bits) Somme de contrôle (16 bits)



    C'est bizarre qu'on puisse pas y avoir accès

    Il me semble avoir vu sous unix:
    ioctl(socket, FIONREAD, &i)

    mais j'ai pas trouver d’équivalent windows. J'essayerais sous BSD voir si c'est bien la taille de la data du datagram.

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    FIONREAD est supporte aussi sous Windows, via ioctlsocket() (la doc explique qu'ils auraient bien aime appeler cette fonction ioctl mais que le nom etait deja pris).
    Un appel comme celui-ci :
    ioctlsocket (sock,FIONREAD,cnt);
    fonctionne parfaitement sous Windows (j'ai du code avec ca dedans qui fonctionne depuis plus de 8 ans).

    Cependant, je prefere quand meme la maniere "bete et mechante" de travailler dans un buffer qui fait la taille de mon message le plus grand possible, et qq fonctions du style get_int (), get_string () qui avancent un pointeur (en faisant attention a ne pas deborder) dans ce buffer et tiennent compte des big-endians/little-endians etc.

Discussions similaires

  1. Question protocole SNMP ?
    Par zyaya dans le forum Développement
    Réponses: 0
    Dernier message: 01/03/2011, 09h21
  2. question protocol net.tcp
    Par damii1 dans le forum IIS
    Réponses: 1
    Dernier message: 25/02/2010, 03h38
  3. Question opérateurs binaires
    Par Evocatii dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 15/01/2009, 19h44
  4. UDP : un protocole anonyme ?
    Par Ekinoks dans le forum Développement
    Réponses: 14
    Dernier message: 03/08/2007, 13h54
  5. Question de binaire : mot hexa norme Ff <-> fF
    Par psylox dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 07/05/2007, 12h29

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