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 :

Sélection sur plusieurs sockets


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Par défaut Sélection sur plusieurs sockets
    Bonjour,


    j'aimerais savoir s'il existe un moyen d'utiliser 2 sockets avec les interruptions
    voir code suivant :


    Code C : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     sockfd = init_socket(50001);
      sockfd2 = init_socket(50000); --> posséde bind+listen
     
     
      while(1) 
        {
     
          /* re-initialisation structure d'ecoute */
          FD_ZERO(&socks);
     
          /* choix des ports d'ecoute*/
          FD_SET(sockfd,&socks);
          FD_SET(sockfd2,&socks);
          FD_SET(keyboard,&socks);
     
          select(sockfd+1, &socks, NULL, NULL, NULL);
          /*select(sockfd2+1, &socks, NULL, NULL, NULL);*/
     
          /* its */
          if (FD_ISSET(sockfd,&socks))
    	read_network(sockfd);                --- > possède un accept
     
          if (FD_ISSET(keyboard,&socks))
    	read_clavier();
     
          if (FD_ISSET(sockfd2,&socks))
    	read_network(sockfd2);
     
        }

    Le but de ce code serait de générer une interruption soit avec sockdf soit avec sockfd2 soit avec keyboard or dans mon cas impossible d'avoir deux sockets
    car on est obligé d'avoir un seul select

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par philou_rt Voir le message
    Bonjour,


    j'aimerais savoir s'il existe un moyen d'utiliser 2 sockets avec les interruptions
    voir code suivant :

    <...>
    car on est obligé d'avoir un seul select
    Ca dépend du système.

    Sur un système conforme à POSIX.1, il est possible surveiller plusieurs fd (sockets, stdin, autres drivers...)

    Sous Windows, c'est uniquement les sockets (et oui, il peut en y avoir plusieurs).

    Le tout est de configurer select() correctement, ce qui n'est pas trivial.

    http://emmanuel-delahaye.developpez....aux.htm#select

    Ton code est faux.

Discussions similaires

  1. [AC-2007] Sélection sur plusieurs listes déroulantes dans un bouton
    Par Razorback dans le forum IHM
    Réponses: 61
    Dernier message: 05/06/2009, 20h16
  2. [Réseau] select() et accept() sur plusieurs sockets
    Par Higestromm dans le forum C++
    Réponses: 13
    Dernier message: 13/10/2008, 09h18
  3. Lecture non bloquante sur plusieurs Sockets avec nio
    Par ratakses dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 19/04/2007, 16h14
  4. Sélection sur plusieurs ClistBox
    Par gigigao dans le forum MFC
    Réponses: 2
    Dernier message: 29/08/2006, 15h37
  5. Sélection sur plusieurs tables
    Par WriteLN dans le forum Requêtes
    Réponses: 19
    Dernier message: 05/10/2005, 15h29

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