Accueil > Forum > > > > Timer qui freeze ?
Timer qui freeze ?
dimanche 4 septembre 2005 à 22:22:48 |
Timer qui freeze ?

WolfSpirit2a
|
Voila déja bonjour tout le monde et merci de prendre un peu de votre temps pour lire mon topic :p
Mon probleme est le suivant :
j'ai une application de chat client d'un coté et serveur de l'autre. Ce
chat etant multisessions, je dois régulierement envoyer de mes clients
un packet au serveur pour lui informer que le client est toujours
online.
Ceci se fait grâce à un timer qui, toutes les X secondes, verifie si le
winsock est connecté au serveur et lui envoit un petit packet si c'est
connecté.
Jusqu'ici, tout va bien mais c'est là que ca se corse !
en effet, j'ai pu me rendre compte , une fois qu'une autre application
du style JEU (pas un logiciel du style paint ou quoi.. non non un jeu
par exemple :)) passe au dessus du client, le timer ne compte plus, ou
il compte trèèèès doucement (1mn pr envoyer une fonction au lieu de 5
sec ..) !
Donc au lieu d'envoyer au serveur un packet toutes les 5 secondes pour
lui dire "je suis toujours là" par exemple, une fois que l'application
passe en arriere plan derriere le jeu le timer s'arrete et donc
n'envoit plus rien, mon client fait alors un timeout car le serveur ne
voit plus de packets arriver ...
Inutile de vous dire que ceci est bien embetant .... vu que mon tchat vient se placer devant le di jeu en question :(
Si quelqu'un peux m'aider svppppp :)
Merci.
WolfSpirit, Admin de Ultimates-Online.
|
|
dimanche 4 septembre 2005 à 22:35:06 |
Re : Timer qui freeze ?

pcpt
|
salut, je crois bien que c'est le principe même du Timer qui est mauvais. le serveur ne doit pas réagir si un paquet n'est pas "renvoyé" (accusé de réception) au bout du temps prédéfini par l'intervalle du Timer, mais juste parce que la connection est interrompue, donc à l'évenement Close de ton WinSock.
j'espère être assez clair. PCPT
|
|
lundi 5 septembre 2005 à 01:22:43 |
Re : Timer qui freeze ?

WolfSpirit2a
|
bah le principe de "l'accusé de reception" c'est partout pareil non ? le fameux Ping.. Pong ! sur irc par exemple ... :)
|
|
lundi 5 septembre 2005 à 01:35:46 |
Re : Timer qui freeze ?

pcpt
|
ouai, et? tu as 2 personnes connectés ensemble (en l'occurence, un client et un serveur). ce n'est pas le serveur qui doit envoyer un message toutes les .... 30 secondes, et considérer son client comme déconnecté s'il n'a pas d'accusé de réception! il ne considère la coupure de connection que quand c'est vraiment le cas, donc en observant son évènement Close PCPT
|
|
lundi 5 septembre 2005 à 01:46:46 |
Re : Timer qui freeze ?

WolfSpirit2a
|
Nan mais le serveur n'envoit rien lui .. il compte seulement depuis combien de temps il n'a pas reçu de packet du client :)
si on décompose, ca marche comme ca :
le serveur compte pour le client n°1
1 sec .. 2 sec .. et hop il recoit un packet du client n°1, donc il remet son compteur à 0 et ca recommence ..
mais si il ne recoit rien et que son compteur dépasse les 15 sec alors il coupe la connexion :p
de son coté le client lui est chargé d'envoyer ce packet automatiquement toutes les 2 secondes par exemple :)
|
|
lundi 5 septembre 2005 à 02:01:32 |
Re : Timer qui freeze ?

pcpt
|
t'es bien d'accord que le client peut très bien rester plus de 15 secondes connecté sans envoyer de paquet (d'où ton problème). comme ta logique s'est mise sur ce principe de timer, qui est faux (preuve en est), il faut gérer çà différemment, à savoir (3e fois) gérer réellement un client DECONNECTé quand il l'est.
ps : à la première connection, le fait que le serveur accepte, c'est en soit un message. donc le serveur en envoie aussi ;) PCPT
|
|
lundi 5 septembre 2005 à 02:31:19 |
Re : Timer qui freeze ?

WolfSpirit2a
|
En tout cas je me suis orienté plutot sur ta
méthode, c'est à dire supprimer un compte utilisateur actif avec la
methode Winsock_close() plutot que si il ne répond pas apres plusieurs
secondes et je dois dire que pour le moment ca marche moyennement bien.
Si je ferme le programme d'un coup sous VB en utilisant le bouton STOP
on voit bien sur mon prog "Le client machin ne répond plus ..
déconnexion du client." par contre si je ferme le programme avec CTRL
ALT et SUPPR, dans ce cas je vois toujours un ghost du client connecté
sur le serveur :/
Comment dois-je faire dans ce cas ? :\
Je vais continuer a chercher de mon coté, peut etre en faisant une
boucle qui verifie l'etat de chaque winsock (connecté ou non).
|
|
lundi 5 septembre 2005 à 02:38:50 |
Re : Timer qui freeze ?

pcpt
|
c'est à toi d'ajouter dans ton client à l'UnLoad -> Socket.Close ce qui est certain, c'est que tu as moins de problème qu'avec le timer. en plus, c'est ton serveur qui subirait une erreur en cas d'envoie de paquets sur un socket fermé. PCPT
|
|
lundi 5 septembre 2005 à 02:45:26 |
Re : Timer qui freeze ?

WolfSpirit2a
|
bah oui mais le probleme c'est que quand tu ferme
ton programme avec ALT + CTRL + SUPPR la fonction Form_Unload n'est pas
gérée vu que ton programme se ferme brusquement.. ce qui me laisse un
jolie ghost sur le serveur :/
|
|
lundi 5 septembre 2005 à 02:55:04 |
Re : Timer qui freeze ?

pcpt
|
ouai, c'est un 2e problème. celui énoncé au départ est bien résolu. donc commencer sa phrase par "mouai, j'ai essayé ta méthode, çà marche moyennement", c'est une assez mauvaise accroche pour demander une aide qui n'a plus aucun rapport ;)
tu peux donc valider ton problème pour les futurs lecteurs et voici la suite :
ton appli a craché, donc des évènements sont toujours en cours. après ce "End", le Socket Serveur n'a pas eu de "Close". mais as-tu vérifié s'il était toujours en State 7? s'il est en cours de fermeture, çà résoud tout. sinon, il faut créer une autre appli, en tansparence, qui observe le gestionnaire des tâches, et qui informe le serveur au moment ou ton appli ne tourne plus.
ShareVB a posté une source aujourd'hui même, tu y trouveras facilement comment lister les process. (inutile si tu arrives à repérer un Etat en cours de fermeture...)
PCPT
|
|
Cette discussion est classée dans : timer, application, serveur, client, jeu
Répondre à ce message
Sujets en rapport avec ce message
programme client/serveur [ par fred ]
Bonjour,est il possible de creer une application client/serveur en VB.explication:Je dois attaquer une application en vb qui utilise une base de donné
Je fais un petit cours sur Winsock [:P] [ par VbBigBrotherdV ]
Bon voilà un petit cours indispensable pour prendre des bonnes bases avec winsock ... C'est dommage qu'on ait pas d'aide sur ce composant dans le fich
comment lancer une application sur serveur , apartir du poste client [ par Zied ]
bonjour a tous,j'ai besoin d'aide pour pouvoir executer une applacation (VB,WNT,SQLSERVER 7.) , installée sur le serveur, à partir d'un poste clientme
application client serveur DNS [ par midos ]
MiDo§salut merci pour votre gentillesse,je voudrait bien savoir comment peut on developper un apllication client serveur DNSen VBcode source svp
Serveur d'une application MultiUser [ par RicoNuch ]
Je dois créer une application serveur qui renseigne les utilisateurs sur le contenu d'une base Access, mais j'ai VB version Pro et pas la version Entr
Problème avec Timer sur appl Winsock [ par Chewba ]
Bonjour,J'ai créé une application serveur/client.Sur le serveur j'ai un timer qui a un interval de 970 et qui fonctionne comme un compte à rebours.Sur
Application client serveur en VB [ par Kentobar ]
Merci de lire mon message.Je veux un code afin de faire une application client serveur sur VB.Il doit y avoir 3 postes clients et un serveur.Et commen
application clent/serveur sous VB [ par hassanag170 ]
s'il vous plait je suis un étudiant et j'aimerais savoir le code source d'une application client/serveur sous VB (avec une calculatrice) dont lequel l
Application Client/Serveur [ par TheEwook ]
Bonjour, Est-ce que vous pouvez me donner des exemples d'applications Clients/Serveur autre que les jeux en réseaux et chat.Un serveur et un ou plusie
Application VB Client/Serveur [ par Sankukia ]
J'ai besoin des exemples des applications VB 6.0 client/serveur avec Base de donnée Acces (ADO) plus présisament comment acceder à partir du réseaux à
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|