Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
meda dummy mioche

Inscrit le: 05 Déc 2004 Messages: 1
|
Posté le: Dim Déc 05, 2004 7:06 pm Sujet du message: [SOCKET]Faire une action en cas de perte de connexion. |
|
|
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: |
//Mon serveur gère plusieurs connections clients à l'aide de threads idntifiés par un entier
public class threadserveur extends Thread
{
Socket connexion;
int numero;
boolean arret=false;
public threadserveur(Socket connexion, int numero)
{
this.connexion = connexion;
this.numero = numero;
}
public void run()
{
}
}
//Dans le run du thread threadserveur plusieurs actions sont possiblesavec le client comme des requêtes sql ...
//dans le run il y a sa
try
{
boolean arret = false;
BufferedReader entrée = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
PrintWriter sortie = new PrintWriter(connexion.getOutputStream(), true);
String nom=null;
String mdp=null;
while (!arret)
{
try
{
String ligne = entrée.readLine();
if(ligne.equals("verification"))
{
nom=entrée.readLine();
mdp=entrée.readLine();
int machin=verification(nom,mdp);
if(machin==1)
{
sortie.println("true");
while(!arret)
{
}
// c'est ici où est le problème, je voudrais que l'application serveur execute util_deconnexion() quand le client s'éteint.
util_deconnexion(nom,mdp);
// 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().
}
else
{
if(machin==2)
{
sortie.println("Mot de passe erroné");
}
else
{
sortie.println("L'utilisateur "+ nom +" n'existe pas");
}
}
}
if(ligne.equals("enregistrement"))
{
nom=entrée.readLine();
mdp=entrée.readLine();
boolean machin=envoie_enregistrement(nom,mdp);
if(machin==true)
{
sortie.println("L'utilisateur "+ nom +" a bien été enregistré");
}
else
{
sortie.println("Vous n'avez pas été enregistré");
}
arret=true;
}
}
catch(IOException ioeee)
{
panneau.append("erreur 2");
}
catch(Exception ee)
{
panneau.append("erreur 1");
}
}
connexion.close();
util_deconnexion(nom,mdp);
}
catch(IOException e)
{
panneau.append("erreur : " + e);
}
}
}
merci pour votre aide |
|
|
Revenir en haut |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|