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 :

socket/pthread les numéros ne se suivent pas


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut socket/pthread les numéros ne se suivent pas
    Bonjour,

    Toujours sur mon projet serveur multi-client, je rencontre un comportement bizarre. Voici en gros le schema de fonctionnement de mon serveur :

    Creation de la socket d'écoute sur le port défini
    Boucle principale en attente des nouvelles connections (select(...))
    Arrivée d'une connection (new_sock = accept(...))
    Lancement du thread de gestion du client (pthread_create(...))
    Fin boucle principale

    :Thread gestion du client
    inotify_init()
    Boucle d'écoute sur la sock transmise (select(...))
    recv()/send() ...
    Fin boucle

    Jusque là rien de bien transcendant, sauf que normalement la boucle principale devrait faire des accept avec des new_sock qui vont on s'incrémentant de +1 (si les connections déjà ouvertes ne sont pas close()). Hors dans mon cas, j'ai parfois +1 +2 ....+5 etc. Du coup quand je lance 9 clients au lieu d'avoir 5-6-7-8-9-10-11-12-13 j'ai des trucs genre 6-7-9-11-12-15-17-18-20

    J'avais déjà fait un serveur multiclient mais sans thread avec juste une boucle select et les numéros de sock accept se suivaient parfaitement bien. Donc j'en conclue que le thread influe sur cette série ... mais comment ? Je sais que les threads utilisent la mémoire du programme principale, serait-ce donc le inotify_init ou autre chose qui influencerait le numéro retourné par le accept de la boucle principale ?

    J'avoue ne pas trop situer le souci ...

  2. #2
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    J'ai pas mal recherché/testé et il semble bien que ce soit le inotify qui influe sur l'index de la socket de cette façon. Faut que je trouve un moyen de réduire ça.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 24
    Par défaut
    Salut,

    Les fonctions open, socket et inotify_init créent toutes les trois des "file descriptor". Je ne sais pas comment linux les allouent, mais en encastrant ces trois fonctions avec les threads, je ne suis pas étonné que les fd de tes sockets ne se suivent pas.

    En quoi cela est-ce gênant ?

  4. #4
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Ben disons que j'ai une sorte de fuite de numéro et que du coup au fil du temps je vais atteindre des valeurs qui dépasseront amplement les limites de l'int ...

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par spin0us Voir le message
    Ben disons que j'ai une sorte de fuite de numéro et que du coup au fil du temps je vais atteindre des valeurs qui dépasseront amplement les limites de l'int ...
    Tu risques d'atteindre bien avant une autre limite, celle du nombre de descripteurs ouverts par process
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre confirmé Avatar de spin0us
    Profil pro
    Inscrit en
    Février 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 87
    Par défaut
    Vi entre autre ...

Discussions similaires

  1. selectionner les numéros qui n'existent pas
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/11/2011, 22h41
  2. les controls du groupbox dynamique ne suivent pas
    Par Liandrine dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/09/2009, 16h17
  3. Je n'arrive pas à afficher les numéro de ligne
    Par erehcab dans le forum Eclipse PHP
    Réponses: 1
    Dernier message: 01/10/2007, 11h59
  4. {mospagebreak} et ne pas afficher les numéro de page.
    Par boux2 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 04/06/2007, 14h18

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