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 :

[WinSock] Question sur les sockets (accept)


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    D�cembre 2004
    Messages
    46
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 46
    Par d�faut [WinSock] Question sur les sockets (accept)
    alors j'ai fait un projet en socket d'abord en MFC avec CSocket, CArchive etc...

    Le client/serveur marche, mais je le trouve pas tr�s stable, surement li� au fait que je ne connais pas trop le r�seau


    Mais qu'� cela ne tienne, je me mis au WinSock du coup pour essayer une alternative

    Alors tout marche bien. C�t� serveur j'ai :
    - initialisation de WinSock
    - cr�ation d'une socket avec les infos n�cessaires
    - bind sur l'adresse et le port
    - listen
    - accept
    - affichage de l'ip du client
    - close socket
    - CleanUp de WinSock


    en gros pour simplifier, le serveur n'attend qu'une seule et unique connexion et affiche l'ip qui a tent�e de se loguer puis se coupe



    la version client marche aussi :
    - init, cr�ation de socket
    - connect sur l'ip et le port du serveur
    - close, cleanup



    et �a marche (c'est beau l'informatique)



    Mais voila, au dela de la connexion qui fonctionne, j'ai un probleme li� � la fonction "accept".
    Elle attend qu'une connexion arrive, et tant que ce n'est pas le cas, elle bloque le processus du serveur en cours, ce qui a notamment pour effet de stopper l'affichage. Ce qui est plut�t g�nant, vu que j'utilise une fen�tre de diagnostique pour afficher des �tats (calculs en cours, nombre de connexion, etc)


    Existe t il une alternative pour "tester" si quelqu'un tente de se connecter plut�t que d'attendre dans le vide obligatoirement jusqu'� ce que quelqu'un viennent, histoire de n'enclencher le accept que lorsqu'il est utile pour pouvoir faire autre chose en m�me temps que cette attente ?

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    et bien tu places l'attente de connexion dans un thread ...
    et si ton application est graphique lorsque la connexion est effective tu envois un message priv� a la fenetre de traitement.
    voir faq:
    http://c.developpez.com/faq/vc/?page...d#WorkerThread
    http://c.developpez.com/faq/vc/?page...PrivateMessage

  3. #3
    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
    Ou bien, dans une application MFC Graphique, tu utilises CAsyncSocket au lieu de CSocket.

    Cela te permettra de r�agir de mani�re �v�nementielle � ce qui se passe sur le r�seau, plut�t que de faire l'attente toi-m�me.

    Pour plus d'informations sur les sockets asynchrones, regarder la doc de la fonction de l'API WSAAsyncSelect().
    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.

  4. #4
    Membre averti
    Inscrit en
    D�cembre 2004
    Messages
    46
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 46
    Par d�faut
    merci � tous les deux

    j'utilise maintenant les Winsock en multithread (un thread pour l'�coute, puis un nouveau pour chaque client), et jusque l�, �a marche bien, sans g�ner l'affichage


    Pour les MFC, j'ai eu des problemes non pas li�s � l'affichage, mais au maintient assez al�atoire de la connexion, et c'est pour �a que je fais en winsock pour voir.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Questions sur les sockets (fonctions synchrones)
    Par azerty25 dans le forum G�n�ral Dotnet
    R�ponses: 7
    Dernier message: 29/06/2007, 00h57
  2. [debutant][Client-serveur] Question sur les sockets
    Par skwi6 dans le forum Entr�e/Sortie
    R�ponses: 3
    Dernier message: 06/11/2006, 15h04
  3. Question sur les socket AF_UNIX
    Par Mr_Chut dans le forum R�seau
    R�ponses: 3
    Dernier message: 10/06/2006, 11h42
  4. Questions sur les socket
    Par lapras123 dans le forum R�seau
    R�ponses: 13
    Dernier message: 09/06/2006, 16h34
  5. Encore une petite question sur les sockets...
    Par damien99 dans le forum MFC
    R�ponses: 4
    Dernier message: 15/02/2006, 14h22

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