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 :

Socket : Connexion/Deconnexion avec CAsyncSocket


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut Socket : Connexion/Deconnexion avec CAsyncSocket
    Bonjour,

    Sous VS 2005, je développe en VC++ une application Client / Serveur TCP en utilisant la classe CAsyncSocket et deux fonctionnements me bloquent :

    en tant que Client :
    l'appel à la fonction Connect retourne en erreur et l'appel à GetLastError renvoie WSAEWOULDBLOCK (normal), mais la fonction OnConnect n'est jamais notifié du code retour de la connexion
    Et donc le seul moyen de connaître l'échec ou la réussite de la connexion au serveur est l'appel à la fonction Send. N'existe il pas un moyen de connaître au plus tôt l'état de la connexion ? et pourquoi la fonction OnConnect n'est pas notifié de l'établissement de la connexion ?

    en tant que serveur multi clients :
    Lors de la fermeture d'un client, le serveur en est notifié par la fonction OnClose, qui néanmoins, n'identifie pas le client déconnecté, ce que j'aurai besoin de connaître. Comment faire ?

    Merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par viklaus83 Voir le message
    Bonjour,

    Sous VS 2005, je développe en VC++ une application Client / Serveur TCP en utilisant la classe CAsyncSocket et deux fonctionnements me bloquent :

    en tant que Client :
    l'appel à la fonction Connect retourne en erreur et l'appel à GetLastError renvoie WSAEWOULDBLOCK (normal), mais la fonction OnConnect n'est jamais notifié du code retour de la connexion
    Et donc le seul moyen de connaître l'échec ou la réussite de la connexion au serveur est l'appel à la fonction Send. N'existe il pas un moyen de connaître au plus tôt l'état de la connexion ? et pourquoi la fonction OnConnect n'est pas notifié de l'établissement de la connexion ?
    As-tu vérifier (avec un sniffer éventuellement) que l'acquittement TCP a bien eu lieu ? Sans quoi, il est normal que OnConnect ne soit jamais appelée.

    Citation Envoyé par viklaus83 Voir le message
    en tant que serveur multi clients :
    Lors de la fermeture d'un client, le serveur en est notifié par la fonction OnClose, qui néanmoins, n'identifie pas le client déconnecté, ce que j'aurai besoin de connaître. Comment faire ?
    Merci.
    Une instance de CAsyncSocket = un client, non ? Cela ne te suffit-il pas à identifier ton client ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut
    Merci 3DArchi pour les réponses, cela m'a permis de corriger mon souci côté serveur et également côté client :

    côté client en cas de retour en WOULDBLOCK je rentre dans une boucle où je refais une tentative de connexion connect qui
    - dans le cas où le serveur écoute : me retourne 0 mais le GetLastError me renvoie WSAEISCONN spitulant la réussite de la connexion
    - dans le cas où pas de serveur : alors je boucle ttes les 100ms jusqu'à un timeout de 5 secondes où je quitte en erreur
    c'est pas toptop mais ça marche et avec CAsyncsocket ç'est la seule méthode que j'ai trouvée...
    (je ne suis toujours pas notifié via OnConnect et pourtant une trame est bien transmise par le serveur (vu avec wireshark))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion Deconnexion Socket communication balance
    Par juju1988 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 10/06/2015, 16h20
  2. Comment garder la connexion ouverte avec socket Java ?
    Par star_close dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/05/2011, 10h27
  3. Réponses: 3
    Dernier message: 11/04/2008, 20h30
  4. [socket] connexion à un serveur irc
    Par soad dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 19/11/2004, 02h59
  5. [SOCKET] connexion client serveur avec applet
    Par kaiser2003 dans le forum Applets
    Réponses: 2
    Dernier message: 06/10/2004, 22h32

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