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 :

D�tecter d�connexion client _ socket


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut D�tecter d�connexion client _ socket
    Salut,
    j ai voulu tester la fonction fournie dans la FAQ :
    http://c.developpez.com/faq/vc/?page...wDetectNetwork
    elle devrait permettre de d�tecter la pr�sence du r�seau.
    Je l'utilise dans une application client serveur pour v�rifier la pr�sence du r�seau.
    Donc je pensais qu'en retirant le c�ble r�seau cette fonction me retournerait False, ce qui n'est pas le cas chez moi !? une explication ?

    Du coup j'essaye de faire autrement.

    Quel fonction utiliser pour d�tecter cette rupture ? par exemple on voit bien l'icone de la connexion r�seau qui affiche cette rupture dans la barre des t�ches, o� trouver cette info ?

    On m a parl� de mettre un thread qui v�rifie que la connexion est OK,
    mais qui peut me dire ce qu'il faut tester ?
    ============================================
    Dans mon appli client serveur il y a un �change de message toutes les x secondes. J ai un time out de 10 minutes si rien n'a �t� �chang�, dans ce cas je r�init le socket.

    Ma fonction "Send" sur le serveur envoie des messages au client p�riodiquement. Si je retire le c�ble r�seau, et que j envoie un message au client ma fonction fait comme si le message avait bien �t� envoy�. Le protocole d�finit ici ne prend pas en compte l'acquittement du client ( c est impos� dans le cahier des charges). C'est pourquoi il faut que je trouve comment d�tecter imm�diatement cette d�connexion.

    Avec la commande netstat, la connexion reste Established pendant un certain temps malgr� cette d�connexion. Pourquoi ?
    ===============================================
    Un autre probl�me:
    Si on kill le client (celui-ci n'envoie pas donc pas la fermeture de la socket) il faudrait que le serveur d�tecte imm�diatement cette "rupture" comment faire ?

    Soft: Visual C++ 7
    WinXP

    Pour ceux qui arrive ici: merci d avoir d�ja lu tout ca.
    Et merci � ceux qui pourront m �claircir sur ces queslques points.

    Yuli qui continue ses investigations

  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,
    Tu as chang� le timeout sur le keepalive ?
    Sinon voir aussi :
    http://c.developpez.com/faq/vc/?page...wDetectNetwork

  3. #3
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par d�faut
    Ma fonction "Send" sur le serveur envoie des messages au client p�riodiquement. Si je retire le c�ble r�seau, et que j envoie un message au client ma fonction fait comme si le message avait bien �t� envoy�. Le protocole d�finit ici ne prend pas en compte l'acquittement du client ( c est impos� dans le cahier des charges). C'est pourquoi il faut que je trouve comment d�tecter imm�diatement cette d�connexion.
    Tu ne peux pas compter sur le protocole qui semble �tre UDP dans ton cas !

    Il faut que tu places une surcouche qui v�rifie certain point !
    Si le message a �t� re�u par le client, le client doit confirmer que ce message a bien �t� re�u !

    Si le message envoy� n'a pas �t� re�u alors le client de d�part renvoie le message tant qu'il n'a pas re�u message de confirmation.

    De m�me le client qui re�oit le message doit v�rifier si le message re�u n'est pas un doublon.

    Donc je pense qu'il faut que tu r�fl�chisses + au niveau de l'architecture globale que sur le protocole utilis� pour ton probl�me.
    Car aucun protocole de base ne g�re cela

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut
    Re et merci pour vos r�ponses.

    Pour ce qui concerne le time out du keepalive:
    en fait j'ai bien cr�� les cl�es dans la base du registre mais:
    le probl�me principale que j'ai c'est que j'utilise une librairie pour toute la communication socket. J'ai une partie de ces sources (que je ne devrais pas poss�der d'ailleurs ...) mais je n'ai pas � y faire de modif.
    Pour le keepalive il faut activer cette "option" via:
    setsockopt(va_sock_Ecoute, SOL_SOCKET, SO_REUSEADDR.......);
    mais dans leur source ca n est pas fait.

    Seul ceci est activ�:
    SO_SNDBUF
    SO_RCVBUF
    SO_REUSEADDR
    et pas le SO_KEEPALIVE
    Donc � ce niveau je ne peux rien faire. Sauf qu'une de leur fonction me retourne le descripteur du socket.... faut que j aille tester ....

    Ti-R:
    Pour le proto c est bien en mode connect� (donc TCP).
    Pour tout ce qui est gestion des messages c'est fait dans une librairie (partie que je ne peux modifier), elle a �t� r�alis�e par une autre soci�t�, mais une de leur fonction qui doit d�tecter la perte de la communication ne marche pas (pas assez vite en tout cas).

    Savez vous o� je peux trouver cette info: quand windows d�tecte la perte du cable reseau, l'icone de la barre des taches disparait ?

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par d�faut
    Cela va �tre dur dur de trouver une solution si tu n'as acc�s qu'au haut niveau de la biblioth�que

    Surtout sur le fait que:
    Si je retire le c�ble r�seau, et que j envoie un message au client ma fonction fait comme si le message avait bien �t� envoy�
    Alors que TCP assure que les donn�es ont �t� transmises correctement :-/

    Ou alors mapp� un control comme pour UDP et indiqu� quel paquets ont bien �t� transmit !
    Ce n�est pas une super solution, cela va super bien fonctionner mais �tre 1 fois plus lent que d'origine.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par d�faut
    Re,

    Bon je suis rassur� sur plusieurs points,
    je viens d'avoir une r�ponse de la soci�t� qui a fait la librairie. Ce probl�me est connu.
    Il me propose d aller modifier :

    Ouvrir l'�diteur de registre (D�marrer, Ex�cuter, regedit)
    Sous le chemin : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/
    Sous le clef : DisableDHCPMediaSense
    Valeur : 0
    Unit� : Hexad�cimal

    Je vais tester ca cet apres midi.

    Pour ce qui est de leur librairie c'est vrai qu il y a un gros soucis concernant les acquittements. Je sais pas o� est pass� TCP dans tout ca...bref je dois faire avec.
    J'ai leur source pour tout ce qui g�re leur comm. bas niveau. Mais elle date d'il y a 3 ans. Et entre temps j'ai eu une nouvelle version de leur librairie, mais sans les sources cette fois, dommage.

    @+ et merci

Discussions similaires

  1. [WD12] D�tecter d�connexion serveur socket
    Par juju1988 dans le forum Windev Mobile
    R�ponses: 6
    Dernier message: 27/05/2011, 10h31
  2. [PHP 5.3] Serveur socket, �v�nement d�connexion clients
    Par CraPu!e dans le forum Langage
    R�ponses: 1
    Dernier message: 10/01/2011, 13h57
  3. Question client-serveur socket
    Par Lex99 dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 07/02/2006, 09h01
  4. TServerSocket: D�tection d�connexion client
    Par Neo41 dans le forum C++Builder
    R�ponses: 3
    Dernier message: 04/09/2004, 19h46
  5. Probl�me de timeout et de d�connexion cliente
    Par Aurelien92 dans le forum CORBA
    R�ponses: 18
    Dernier message: 24/08/2004, 14h32

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