IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

probleme de cloture ecoute reseau


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut probleme de cloture ecoute reseau


    J'ai un pogramme Client.jar avec un bouton de connexion à un serveur
    et un pogramme Serveur.jar avec un bouton de connexion du serveur,
    cela fonctionne tres bien, par contre meme si cote serveur et cote client:
    BufferedReader InputStreamReader est ferme
    PrintWriter est ferme
    socket est ferme

    le port d'ecoute est toujours present,
    meme en fermant les 2 application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Documents and Settings\vrinette>netstat /a|find "8080"
      TCP    homer:8080             homer:0                LISTENING
      TCP    homer:8080             127.1.1.0:1779         TIME_WAIT
    port utiliser 8080 et appelle en local, meme probleme entre deux micro.

    pour fermer le port d'ecoute il faut que je kill 2 process
    javaw.exe
    si bien que si je me deconnecte du reseau pour reussir à refaire la reconnection Client Serveur c'est pas simple.

    d'essayer de m'expliquer ce qui ne vas pas
    je suis en java 6 et programmation avec eclipse Version: 3.4.0

    Code client.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.net.*;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    /** Le processus client se connecte au site fourni dans la commande
     *   d'appel en premier argument et utilise le port distant 8080.
     */
    public class Client {
       static final int port = 8080;
       static JButton Connecter;
    	static JFrame Plateau;
     
       public static void main(String[] args) throws Exception {
    		  Plateau = new JFrame("Presse Papier");
    		  Plateau.getContentPane().setLayout(null);
    		  Plateau.setBounds(0,0,400,250);
    		  Plateau.setVisible(true);
     
    //	    bouton connecte
    		  Connecter=new JButton("Connecter Client");
    		  Connecter.setBounds(190,110,150,30);
    		  Connecter.addActionListener(new ActionListener()  {
    	    	    public void actionPerformed(ActionEvent evt){
    	    	    	Connecter_Click(evt);
    	    	    }});  	
    	      Plateau.getContentPane().add(Connecter);
    	      Connecter.setVisible(true);
    	      Connecter.repaint(); 
     
     
     
     
     
       }
       public static void Connecter_Click(ActionEvent evt){
    		  String Intitule;
     
    		  try{
    		  Intitule=Connecter.getText();
    		  // pas connecter
    		  if (Intitule.compareTo("Connecter Client") == 0){
    			  Connecter.setText("Deconnecter Client");
    			   Socket socket = new Socket("127.1.1.0", port);
    		        System.out.println("SOCKET = " + socket);
     
    		        BufferedReader plec = new BufferedReader(
    		                               new InputStreamReader(socket.getInputStream())
    		                               );
     
    		        PrintWriter pred = new PrintWriter(
    		                             new BufferedWriter(
    		                                new OutputStreamWriter(socket.getOutputStream())),
    		                             true);
     
    		        String str = "bonjour";
    		        for (int i = 0; i < 10; i++) {
    		           pred.println(str);          // envoi d'un message
    		           str = plec.readLine();      // lecture de l'écho
    		        }
    		        System.out.println("END");     // message de terminaison
    		        pred.println("END") ;
    		        plec.close();
    		        pred.close();
    		        socket.close();		
    		        Connecter.setText("Connecter Client");
    		  }else{
    			  Connecter.setText("Connecter Client");
    		  }
    		  }catch (Exception e){}
    	  }
    }
    Code serveur.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.net.*;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    public class Serveur {
       static final int port = 8080;
       static JButton Connecter;
    	static JFrame Plateau;
     
       public static void main(String[] args) throws Exception {
    		  Plateau = new JFrame("Presse Papier");
     
    		  Plateau.getContentPane().setLayout(null);
    		  Plateau.setBounds(0,0,400,250);
    		  Plateau.setVisible(true);
     
    //	    bouton connecte
    		  Connecter=new JButton("Connecter Serveur");
    		  Connecter.setBounds(190,110,150,30);
    		  Connecter.addActionListener(new ActionListener()  {
    	    	    public void actionPerformed(ActionEvent evt){
    	    	    	Connecter_Click(evt);
    	    	    }});  	
    	      Plateau.getContentPane().add(Connecter);
    	      Connecter.setVisible(true);
    	      Connecter.repaint();	   
       }
       public static void Connecter_Click(ActionEvent evt){
    		  String Intitule;
     
    		  try {
    		  Intitule=Connecter.getText();
    		  // pas connecter
    		  if (Intitule.compareTo("Connecter Serveur") == 0){
    			  Connecter.setText("Deconnecter Serveur");
    			  ServerSocket s = new ServerSocket(port);
    			  Socket soc = s.accept();
     
    			  // Un BufferedReader permet de lire par ligne.
    			  BufferedReader plec = new BufferedReader(
    			                         new InputStreamReader(soc.getInputStream())
    			                        );
     
    			  // Un PrintWriter possède toutes les opérations print classiques.
    			  // En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
    			  PrintWriter pred = new PrintWriter(
    			                       new BufferedWriter(
    			                          new OutputStreamWriter(soc.getOutputStream())), 
    			                       true);
     
    			  while (true) {
    			     String str = plec.readLine();          // lecture du message
    			     if (str.equals("END")) break;
    			     System.out.println("ECHO = " + str);   // trace locale
    			     pred.println(str);                     // renvoi d'un écho
    			  }
    			  plec.close();
    			  pred.close();
    			  soc.close();
    			  Connecter.setText("Connecter Serveur");
     
    		  }else{
    			//  Connecter.setText("Connecter Serveur");
    		  }
    		  }catch (Exception e){}
    	  }
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    que ce soit coté client ou serveur, retire cette abheration
    Tu ignore l'erreur et après tu n'arrive, forcément, pas a trouver pourquoi ton code marche par. Affiche au moins l'erreur dans la console pour savoir ce qui se passe.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut reseau
    J'ai suivi ton conseille et cela a confirmer que le socket ne se fermait
    puis j'ai ajouter le close du serversocket et la oh miracle, impeccable,
    pourtant c'est pas faute de la part de mes prof de programmation de ne pas m'avoir dit sans cesse qu'il faut toujours fermer ce que l'on ouvre
    en tant cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme pour configurer un reseau
    Par tlaho dans le forum Hardware
    Réponses: 7
    Dernier message: 02/10/2006, 18h18
  2. problème de drivers carte réseau
    Par abdessami3e dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 03/08/2006, 14h09
  3. Problème chargement module carte réseau
    Par vbcasimir dans le forum Matériel
    Réponses: 2
    Dernier message: 14/05/2006, 13h01
  4. [Sécurité] probleme d'acces en reseau local avec OPENDIR()
    Par babycracker dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 14h51
  5. Réponses: 33
    Dernier message: 30/03/2004, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo