Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2913 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [SOCKET]Faire une action en cas de perte de connexion.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SOCKET]Faire une action en cas de perte de connexion.

n°915287
meda
Posté le 05-12-2004 à 20:24:23  profilanswer
 

bonjour tout le monde,  
j'ai une application client et une serveur, je voudrais que quand l'application cliente se fermer une action soit declancher malheureusement je ne sais pas comment faire. Je pensais mettre avec des exception mais je ne sais pas lesquels faut prendre.  
Voici mon code coter serveur:  

Code :
  1. //Mon serveur gère plusieurs connections clients à l'aide de threads idntifiés par un entier   
  2. public class threadserveur extends Thread
  3.    {
  4.       Socket connexion;
  5.       int numero;
  6.       boolean arret=false;
  7.       public threadserveur(Socket connexion, int numero)
  8.       {
  9.          this.connexion = connexion;
  10.          this.numero = numero;
  11.       }
  12.       public void run()
  13.       {
  14.                 }
  15.          }
  16.  
  17. //Dans le run du thread threadserveur plusieurs actions sont possiblesavec le client comme des requêtes sql ...  
  18. //dans le run il y a sa  
  19. try
  20.          {
  21.             boolean arret = false;
  22.             BufferedReader entrée = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
  23.             PrintWriter sortie = new PrintWriter(connexion.getOutputStream(), true);
  24.             String nom=null;
  25.             String mdp=null;
  26.             while (!arret)
  27.             {
  28.                try
  29.                {
  30.                String ligne = entrée.readLine();
  31.                if(ligne.equals("verification" ))
  32.                {
  33.                   nom=entrée.readLine();
  34.                   mdp=entrée.readLine();
  35.                   int machin=verification(nom,mdp);
  36.                   if(machin==1)
  37.                   {
  38.                      
  39.                      sortie.println("true" );
  40.                      while(!arret)
  41.                      {
  42.                      }
  43. // c'est ici où est le problème, je voudrais que l'application serveur execute util_deconnexion() quand le client s'éteint.  
  44.                      util_deconnexion(nom,mdp);
  45. // Mais quand le client s'éteint par exemple avec un clic sur la fermeture de l'application, le serveur termine directement le thread et ne passe pas par util_deconnexion().  
  46.                   }
  47.                   else
  48.                   {
  49.                      if(machin==2)
  50.                      {
  51.                         sortie.println("Mot de passe erroné" );
  52.                      }
  53.                      else
  54.                      {
  55.                         sortie.println("L'utilisateur "+ nom +" n'existe pas" );
  56.                      }
  57.                   }
  58.                }
  59.                if(ligne.equals("enregistrement" ))
  60.                {
  61.                   nom=entrée.readLine();
  62.                   mdp=entrée.readLine();
  63.                   boolean machin=envoie_enregistrement(nom,mdp);
  64.                   if(machin==true)
  65.                   {
  66.                      sortie.println("L'utilisateur "+ nom +" a bien été enregistré" );
  67.                   }
  68.                   else
  69.                   {
  70.                      sortie.println("Vous n'avez pas été enregistré" );
  71.                   }
  72.                   arret=true;
  73.                }
  74.                }
  75.                catch(IOException ioeee)
  76.                {
  77.                   panneau.append("erreur 2" );
  78.                }
  79.                catch(Exception ee)
  80.                {
  81.                   panneau.append("erreur 1" );
  82.                }
  83.             }
  84.             connexion.close();
  85.             util_deconnexion(nom,mdp);
  86.          }
  87.          catch(IOException e)
  88.          {
  89.             panneau.append("erreur : " + e);
  90.          }
  91.       }
  92.    }


merci pour votre aide


Message édité par meda le 07-12-2004 à 12:03:05
mood
Publicité
Posté le 05-12-2004 à 20:24:23  profilanswer
 

n°915442
Jubijub
Parce que je le VD bien
Posté le 06-12-2004 à 09:02:34  profilanswer
 

essaye code au lieu de cpp ..


---------------
Jubi Photos : Flickr - 500px
n°915462
skeye
Posté le 06-12-2004 à 10:14:39  profilanswer
 

Jubijub a écrit :

essaye code au lieu de cpp ..


essaie surtout [/ cpp] et pas [\ cpp]


Message édité par skeye le 06-12-2004 à 10:14:47

---------------
Can't buy what I want because it's free -
n°916855
meda
Posté le 07-12-2004 à 12:03:48  profilanswer
 

voila c'est modifié.
Personne ne peut m'aider ?

n°916872
sircam
I Like Trains
Posté le 07-12-2004 à 12:19:24  profilanswer
 

A moins que le client notifie le serveur d'une fin de la communication - ce qui devrait se faire dans le cas d'une terminaison grâcieuse, on se dit au revoir - le serveur ne peut pas directement "sentir" que le client est déconnecté.
 
Sauf à charge pour toi d'implémenter un mécanisme de "ping/pong" dans le protocole de communication. On en a parlé il n'y a pas lgtmps sur ce forum.
 
De plus :
- BufferedReader entrée : à proscrire : un horrible caractère accentué;
- Prends la bonne habitude de coder en anglais;
- ligne.equals("verification" ) : effectue plutôt le test inverse pour éviter un NullPointerException dans le cas où ligne est null;
- Un petit effort sur l'orthographe me ferait plaisir.


Message édité par sircam le 07-12-2004 à 12:19:55

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°916917
meda
Posté le 07-12-2004 à 13:18:29  profilanswer
 

merci je vais voir cela.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [SOCKET]Faire une action en cas de perte de connexion.

 

Sujets relatifs
select et socket enrobé de sucre (fdopen mode lecture) -> probleme ???[Struts] lancer une action dans le code jsp
Réseau : quel formalisme pour les socket() ?Connexion Paradox & Access
[JAVA Socket] ou comment detecter qd un client s'est deconnecté?[Oracle] Pb de connexion avec Tomcat
Connexion à des tables d'Oracle à partir d'Accessles socket
Generer une Action<form action:mailto....
Plus de sujets relatifs à : [SOCKET]Faire une action en cas de perte de connexion.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR