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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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 397
    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 397
    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