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

MFC Discussion :

CAsyncSocket


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par défaut CAsyncSocket
    bonjour,
    je suis en train de développer une application Clients/Serveur en utilisant MFC et CAsyncSocket.
    J'aimerai savoir si CAsyncSocket est approprié pour gérer plusieurs Clients qui pourraient émettre des requetes simultanément ( enfin presque ) sur un même serveur. Comment cela est-il géré?
    J'ai étudié la documentation de microsoft mais ce n'est pas très clair...

    Merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Ah, la classe CAsyncSocket, (ou al fonction WSAAsyncSelect() pour les non-MFC), c'est carrément une nouvelle façon de programmer un serveur.

    Pour le programmeur, c'est comme si l'application restait mono-threadée (même si en interne, un thread supplémentaire est créé, de manière transparente et on n'est pas censé y avoir accès).

    CAsyncSocket, permet de transformer en événement tout ce qui se passe sur le réseau. Sur un socket d'attente de serveur par exemple, la fonction OnAccept() (événement FD_ACCEPT) est appelée chaque fois qu'un client tente de se connecter, et c'est au programmeur de faire appel à Accept() dans la fonction, créant ainsi un nouveau CAsyncSocket, pour le socket de travail cette fois-ci.
    Ainsi, le programme ne passe pas son temps à boucler sur un accept() bloquant : le accept() n'est appelé que quand un client se connecte.

    Pour les sockets de travail, c'est la même chose, mais on gère généralement les événtments FD_READ et FD_CLOSE : onReceive() est appelé automatiquement quand des données sont présentes, et le serveur n'a plus qu'à faire un read() pour les obtenir, les traiter, répondre et rendre la main.

    Typiquement, en CAsyncSocket, le serveur supporte N clients simultanément connectés, et chaque requête est transformée en événement: Les requètes sont donc traitées l'une après l'autre par le serveur, même si deux sont envoyées simultanéments : elles seront dans la file d'événements du thread, et seront traitées une à la fois.


    Si tu veux en savoir plus sur la façon dont cela est géré en interne, regarde un peu du coté de la doc de WSAAsyncSelect() : tout est transformé en message Windows.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par défaut
    ahh je te remercie pour ces éclaircissements. Donc si j'ai bien compris, pas besoin de thread tout est géré. Apres tout depend de mon code sur OnReceive.
    Merci

Discussions similaires

  1. L'utilisation de CAsyncSocket??
    Par Verboz dans le forum MFC
    Réponses: 2
    Dernier message: 23/05/2006, 03h03
  2. CasyncSocket
    Par Verboz dans le forum MFC
    Réponses: 2
    Dernier message: 14/05/2006, 12h01
  3. [MFC][CAsyncSocket] OnAccept
    Par corwin_d_ambre dans le forum MFC
    Réponses: 4
    Dernier message: 16/02/2006, 11h34
  4. Réponses: 4
    Dernier message: 02/06/2005, 13h08
  5. CSocket ou CAsyncSocket
    Par melcom dans le forum MFC
    Réponses: 9
    Dernier message: 17/07/2002, 17h32

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