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
port utiliser 8080 et appelle en local, meme probleme entre deux micro.
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
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 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
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 : 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){} } }
Partager