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 :

sendto fait mal son travail


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 15
    Par défaut sendto fait mal son travail
    Salut à tous,

    Je développe un petit programme de socket en mode RAW sous Linux que je pourrais résumer à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i = 0;
    for(i = 0; i < 100; i++)
    {
       sendto(/*blablabla*/);
    }
    Lorsque j'exécute mon programme, d'après wireshark et ifconfig, je n'envois que 22 à 23 paquets soit un rendement de... 22 à 23%, évidemment ces chiffres peuvent varier légèrement.
    Pour être totalement efficace, je dois ajouter un usleep() qui laisse une petite pause pour laisser le temps d'envoyer proprement.

    Or ce concept me dérange, que les paquets n'arrivent pas tous à destination, soit, c'est normal puisque les choses se font très rapidement. Mais que mes paquets ne soient pas tous envoyés me dérange, je préférerais que sendto bloque mais fasse son travail.

    Que se passe-t-il concrètement ? Quelque chose sature ? La pile réseau, la socket, autre chose ?

    La page de MAN dit que sendto ne garantie pas la bonne réception, or je devrais au moins pouvoir envoyer TOUS mes paquets même s'ils sont perdus et que le destinataire n'en reçoive que quelques-uns..

    Pour résoudre ce problème, que faire ?

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 15
    Par défaut
    Je viens à l'instant de trouver avec un collègue en remontant les sources du noyau : il fallait changer une option à l'aide de setsockopt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int on = 1;
    setsockopt(mysock, SOL_IP, IP_RECVERR, &on, sizeof(on))

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

Discussions similaires

  1. tReplace fait mal son job
    Par MaitrePylos dans le forum Développement de jobs
    Réponses: 10
    Dernier message: 01/10/2013, 18h16
  2. jobb ne fait pas son travail
    Par pol2095 dans le forum Android
    Réponses: 0
    Dernier message: 28/09/2013, 21h57
  3. compteur qui ne fait pas son travaile
    Par schats dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2011, 13h48
  4. comment tester si une fonction fait bien son travail
    Par access dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/11/2003, 16h46
  5. comment tester si une fonction fait bien son travail
    Par access dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/11/2003, 16h46

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