begin process at 2012 02 16 07:18:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Timer qui freeze ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

1 2

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 à


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,964 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales