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

Développement Discussion :

send, recv, udp, packet ?


Sujet :

Développement

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut send, recv, udp, packet ?
    Bonjour,

    J'ai reussis a faire passer un "hello world" grace au tutorial en C++

    Maintenant j'aimerais pouvoir me figurer un peu mieux comment tout ca passe a travers send et recv en "mode" udp mais j'ai pas vraiment trouvé de reponse en recherchant.


    je supose que j'ai une info a faire passer comme ca :

    <pseudo>-sujet-verbe-complement-

    donc en udp, dans le pire des cas tel quel, je peux recevoir quelque chose comme ca :

    -verbe-<pseudo>-*rien*

    Est-ce que ca veux dire que send a du etre employé 3 fois pour envoyé l'info et que chaque send appelé = 1 paquet qui va faire son voyage mais malheuresement 1 est perdu et les 2 autres sont arrivé dans le désordre ?

    J'en sais rien parceque peut etre que send a tout envoyé d'un coup et recv recois tout d'un coup aussi mais dans le desordre..

    Bref, je veux juste savoir si un send = 1 paquet = 1 recv et dans ce cas ca serait tres simple pour remetre les paquets dans l'ordre ou si c'est pas ca du tout, comment fonctionne le decoupage de l'info et des paquets.

    merci si vous avez une indiquation

  2. #2
    Membre régulier Avatar de dockurt2k
    Inscrit en
    Juillet 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 91
    Points : 98
    Points
    98
    Par défaut
    Salut Nonoce.

    Bizarre, pour les socket d'inspiration Berkeley, Send (et Receive) transmettent directement des T-SDU(donné transféré à la couche transport). Donc la couche UDP reçoit ton message en entier. Il ne peut arriver en désordre donc (différent paquets peuvent etre désordonnés, mais un T-SDU conservera nécéssairement son intégrité).

    Si tu appelle Send une seul fois pour envoyer
    <pseudo>-sujet-verbe-complement-
    Alors le résultat doit nécessairement etre le meme (ou rien du tout, UDP spirit )

    Petit exemple de ton code?



    Au cas ou ce soit ton probléme, ti rappel (UDP/IP):

    UDP datagram : Jamais découpé, quand tu demande à ton socket d'envoyer un tas de données en UDP, la couche UDP ne scindera jamais ces données. Elle se contente de rajouter son en tete et de passer le tout à la couche IP.

    IP datagram : Découpe les paquets reçue de la cocuhe supérieure (ici UDP) de maniére à ce que les paquets soient inférieure à la MTU utilisés par les couches inférieures . Les paquets peuvent aussi etre fragmenté par un routeur entre la source et destination.
    Si jamais un de ces paquets n'arrivent pas à destination l'ensemble des fragments est supprimés.
    les fragments IP reçus sont remis dans l'ordre par la couche avans remise à la couche UDP.

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par dockurt2k
    UDP datagram : Jamais découpé, quand tu demande à ton socket d'envoyer un tas de données en UDP, la couche UDP ne scindera jamais ces données. Elle se contente de rajouter son en tete et de passer le tout à la couche IP.

    Désolé mais c est faux : taille max pour un datagramme UDP = (2^16)-1 Bytes ( la longueur des data est codée sur un mot)

  4. #4
    Membre régulier Avatar de dockurt2k
    Inscrit en
    Juillet 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 91
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par ZaaN
    Désolé mais c est faux : taille max pour un datagramme UDP = (2^16)-1 Bytes ( la longueur des data est codée sur un mot)
    Tout a fait d'accord avec toi, la taille limite d'un paquet UDP est 65536 byte (car codé sur 16 bits). Cela n'empeche que la couche UDP ne fragmente jamais les données. Si tu envoie plus de 65536 a UDP, ton 4-SDU sera refusé.
    Si tu envoie moins la couche UDP encapsulera tout cela pour créer un seul et unique 3-SDU destinée a la couche IP.

    La couche IP fragmentera peut etre ce paquet UDP, mais cela est transparent au niveau UDP.

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    en effet !

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2015, 18h06
  2. Réponses: 8
    Dernier message: 30/09/2010, 21h25
  3. Comportement (aléatoire?) de send()/recv() ?
    Par grip.inc dans le forum Réseau
    Réponses: 4
    Dernier message: 11/12/2009, 13h56
  4. conflit send recv socket
    Par gy0m76 dans le forum Réseau
    Réponses: 3
    Dernier message: 06/02/2007, 15h10
  5. [Socket] Send/Recv type double sur architectures différentes
    Par nicolas.pied dans le forum Réseau
    Réponses: 4
    Dernier message: 31/03/2006, 20h33

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