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

  FORUM HardWare.fr
  Programmation
  Java

  [java]Régler le timeout de déconnexion des sockets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java]Régler le timeout de déconnexion des sockets

n°687861
electricbl​ue
Pas très inspiré...
Posté le 30-03-2004 à 22:02:31  profilanswer
 

Je dispose d'une appli client/serveur en java, qui utilise les sockets pr les connexions. Jusque là tt va bien, la communication se fait bien.
Par contre en cas de déconnexion du client, par exemple si on enlève le cable réseau, le serveur met plus de 10 minutes à remarquer que le client s'est déconnecté.
Comment régler le timeout de la déconnexion, ds les options des sockets ya que le timeout de la lecture (read) qui peut être paramètrer. J'ai pensé à un mécanisme de ping-pong, ms seulement en dernier recours.
Merci d'avance.


Message édité par electricblue le 30-03-2004 à 22:02:56
mood
Publicité
Posté le 30-03-2004 à 22:02:31  profilanswer
 

n°687935
nraynaud
lol
Posté le 30-03-2004 à 22:55:55  profilanswer
 

electricblue a écrit :

Je dispose d'une appli client/serveur en java, qui utilise les sockets pr les connexions. Jusque là tt va bien, la communication se fait bien.
Par contre en cas de déconnexion du client, par exemple si on enlève le cable réseau, le serveur met plus de 10 minutes à remarquer que le client s'est déconnecté.
Comment régler le timeout de la déconnexion, ds les options des sockets ya que le timeout de la lecture (read) qui peut être paramètrer. J'ai pensé à un mécanisme de ping-pong, ms seulement en dernier recours.
Merci d'avance.

C'est TCP qui gère ça normalement.


---------------
trainoo.com, c'est fini
n°687962
electricbl​ue
Pas très inspiré...
Posté le 30-03-2004 à 23:08:32  profilanswer
 

nraynaud a écrit :

C'est TCP qui gère ça normalement.


 
Donc pas possible de le faire directement depuis java??

n°688034
the real m​oins moins
Posté le 31-03-2004 à 00:20:50  profilanswer
 
n°688036
benou
Posté le 31-03-2004 à 00:27:29  profilanswer
 


ouais mais là on sait pas si la socket est encore valide ou non ...

n°688043
the real m​oins moins
Posté le 31-03-2004 à 00:43:18  profilanswer
 

euh ouais je suis pas sur qu'il y ait une diff. entre ça et ce qu'il veut


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°688064
electricbl​ue
Pas très inspiré...
Posté le 31-03-2004 à 02:29:54  profilanswer
 

setSoTimeout convient pas ds mon cas (je l'ai dit ds mon 1er post), ça met un timeout uniquement sur la réception (read). Moi je voudrais un timeout sur l'existance de la socket (erreur java.net.SocketException: Connection timed out).

n°688079
LAs3R
Posté le 31-03-2004 à 07:52:13  profilanswer
 

Code :
  1. boolean echangeOk; // doit être déclaré comme attribut de ta classe et pas de la methode
  2. Thread timer = new Thread() {
  3. public void run() {
  4.   try {
  5.    // ecriture socket
  6.    // lecture socket
  7.    echangeOk = true;
  8.   } catch (IOException ioe) {
  9.    // ...
  10.   }
  11. };
  12. timer.start();
  13. try {
  14. timer.join(timeOutEnSecondes *1000);
  15. } catch (InterruptedException ie) {
  16. // ...
  17. }
  18. if (echangeOk) {
  19. // la communication s'est bien passée
  20. } else { // ya eu un pb
  21. throw new MaTimeoutException("pas de réponse au bout de " + timeOutEnSecondes + "sec" );
  22. }


Message édité par LAs3R le 31-03-2004 à 07:58:44
n°688116
LAs3R
Posté le 31-03-2004 à 09:44:11  profilanswer
 

c'est pas tres propre mais ca doit marcher
tu pourrais améliorer en remplacant le thread par une classe qui implemente Runnable contenant le boolean echangeOk

n°688657
electricbl​ue
Pas très inspiré...
Posté le 31-03-2004 à 16:44:15  profilanswer
 

LAs3R a écrit :

c'est pas tres propre mais ca doit marcher
tu pourrais améliorer en remplacant le thread par une classe qui implemente Runnable contenant le boolean echangeOk


 
Merci pr ta réponse. Ms je ne pense pas qu'elle puisse marcher ds mon cas: le client peut très bien ne rien envoyer comme données tout en étant connecté.
 
Voilà une version simplifiée de mon client:

Code :
  1. public class MonClient extends Thread {
  2.   private Socket _client;
  3.   private PrintWriter _outputData;
  4.   private BufferedReader _inputData;
  5.   public MonClient(Socket client) {
  6.     super("Client" );
  7.     _client = client;
  8.     try {
  9.       _inputData = new BufferedReader(new InputStreamReader(_client.
  10.           getInputStream()));
  11.       _outputData = new PrintWriter(_client.getOutputStream());
  12.     }
  13.     catch (IOException ioe) {
  14.       /* Traitement erreur. */
  15.     }
  16.   }
  17.   public void run() {
  18.     try {
  19.       String incdata;
  20.       do {
  21.         incdata = _inputData.readLine();
  22.         /* Traitement de la requête. */
  23.       }
  24.       while (incdata.equals("FIN" ));
  25.       closeClient();
  26.     }
  27.     catch (SocketException se) {
  28.       /* Traitement erreur. */
  29.     }
  30.     catch (IOException ioe) {
  31.       /* Traitement erreur. */
  32.     }
  33.   }
  34.  
  35.   public void closeClient() {
  36.     try {
  37.       _inputData.close();
  38.       _outputData.close();
  39.       _client.close();
  40.     }
  41.     catch (IOException e) {
  42.       /* Traitement erreur. */
  43.     }
  44.   }
  45. }


Message édité par electricblue le 31-03-2004 à 16:46:50
mood
Publicité
Posté le 31-03-2004 à 16:44:15  profilanswer
 

n°689037
Deaddy
Posté le 31-03-2004 à 21:59:25  profilanswer
 

perso, pour les connex tcp, je teste juste la valeur de retour de InputStream.read()
-1 => deconnexion


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

  [java]Régler le timeout de déconnexion des sockets

 

Sujets relatifs
[Java - Forte] Je peux pas passer mes déclarations comme je veux !!![java][sql]connection java/Sql Server
Pb htaccess impossible d'accéder à une applet java avec une page htmlcompilateur java spécial
Petite question aux programmeur javaConnexion qui délire entre mon appli Java et MySql
[JAVA] méthode toStringSockets haut niveau
LaTeX interprété par Javajava et les img
Plus de sujets relatifs à : [java]Régler le timeout de déconnexion des sockets


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