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 :

[timer & thread] timeout & socket non bloquant


Sujet :

Réseau C

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Merci pour vos réponses, elles ont clarifié certaines choses

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    bonjour

    a titre d'info uniquement, avez vous un exemple d'un accept non bloquant

    etape 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock = socket(PF_INET,SOCK_STREAM,0))
    etape 2: gestion des option
    etape 3 : Configuration de l'adresse et du port
    etape 4 :Configuration du nombre d'écoute
    tout ca c ok

    atepa 5 : accept connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock2 = accept(sock, NULL, 0))
    cette fonction est bloquant ...
    alors j'ai voulu faire un select avant mais cela marche pas, en effet la valeur retournée apres le teimeout soit sock2 est 1230976571 quand il n'y a pas de connexion etablie.
    Or la valeur renvoyée par accept est un nombre non négatif lors d'un succès, et -1 lors d'un échec. Donc il considere qu'il y a un client
    ????
    merci de votre aide

  3. #23
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    a titre d'info uniquement, avez vous un exemple d'un accept non bloquant
    Oublie cette idée de "non bloquant". C'est contre-productif. Fait un thread par connexion et c'est tout.
    Pas de Wi-Fi à la maison : CPL

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    ok je vais suivre ce conseil
    et pour communiquer proprement entre thread : des pipes ?
    cela va me faire un paquet de thread a gerer !!

  5. #25
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    ok je vais suivre ce conseil
    et pour communiquer proprement entre thread : des pipes ?
    Des contextes suffisent. La mémoire est partagée par définition. Mais c'est rarement nécessaire...
    Pas de Wi-Fi à la maison : CPL

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    ok ben je vais faire attention ; utilisation d'un bon vieux mutex (ou plusiers )
    je n'utilisait pas pas le select avant, pas confronter a cette situation ...

  7. #27
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    ok ben je vais faire attention ; utilisation d'un bon vieux mutex (ou plusiers )...
    Oui.

    http://emmanuel-delahaye.developpez.com/pthreads.htm
    Pas de Wi-Fi à la maison : CPL

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    En fait, voici un bref descriptif de mon exemple, j'ai une thread qui gère les connexion de clients sur deux ports, pour chaque nouveaux clients elle associe une nouvelle thread.
    Le fait d'utiliser ce principe avec la thread relative a la gestion des connexion me simplifiait la vie mais fonction accept bloquante

  9. #29
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    En fait, voici un bref descriptif de mon exemple, j'ai une thread qui gère les connexion de clients sur deux ports, pour chaque nouveaux clients elle associe une nouvelle thread.
    Le fait d'utiliser ce principe avec la thread relative a la gestion des connexion me simplifiait la vie mais fonction accept bloquante
    Je ne vois pas où est le problème. Il est parfaitement logique que le thread principal du serveur soit bloqué sur accept(). C'est fait pour...

    Pseudo-code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    thread_client(cli)
    {
       DO
          receive(cli.sock, data) ; blocant
          process (data)
       WHILE NOT cli.fin
       delete cli
    }
     
    thread_serveur()
    {
       DO
          new cli
     
          accept(cli)  ; blocant
          create_thread(thread_client, cli)
       FOREVER
    }
    Pas de Wi-Fi à la maison : CPL

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    ou je suis entierement d'accord pour un port mais si le serveur doit gérer plusieurs ports (A et B). le serveur va attendre une connexion sur la part A alors qu'un client va vouloir se connecter sur le port B. Sauf si on eclate le serveur en 2 thread : ca complique , non?
    c'est pour cela que je voulais rendre accept non bloquante avec timer pour eviter qu'elle soit associable

  11. #31
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    ou je suis entierement d'accord pour un port mais si le serveur doit gérer plusieurs ports (A et B). le serveur va attendre une connexion sur la part A alors qu'un client va vouloir se connecter sur le port B.
    Un accept() ne peut pas surveiller 2 ports. Il faut une instance du thread serveur par port (listen())...
    Sauf si on eclate le serveur en 2 thread : ca complique , non?
    Ben non, au contraire... 1 code, 2 instances...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    thread_serveur(srv)
    {
       listen(srv.port)
       DO
          new cli
     
          accept(cli)  ; blocant
          create_thread(thread_client, cli)
       FOREVER
    }
    Pas de Wi-Fi à la maison : CPL

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    Merci de votre aide, elle a été precieuse.

    En ce qui me concerne, je pense avoir fait le tour de toutes mes interrogations.

    Puis-je fermer cette discution, si il n'y a plus d'autres questions .... ???

  13. #33
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par untipy Voir le message
    Puis-je fermer cette discution, si il n'y a plus d'autres questions .... ???
    C'est ton thread, tu en fais ce que tu veux...
    Pas de Wi-Fi à la maison : CPL

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    ok,
    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Socket non bloquant
    Par Shredder dans le forum Web & réseau
    Réponses: 1
    Dernier message: 29/10/2007, 11h44
  2. socket non bloquant
    Par Mister_Don dans le forum C++
    Réponses: 18
    Dernier message: 17/08/2007, 17h57
  3. [Réseau] socket non bloquant
    Par beLz dans le forum Réseau
    Réponses: 2
    Dernier message: 28/07/2007, 15h20
  4. Réponses: 3
    Dernier message: 20/10/2006, 19h50
  5. socket non bloquante
    Par jeje99 dans le forum Réseau
    Réponses: 15
    Dernier message: 21/02/2006, 08h52

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