ça veut dire que ton serveur n'est pas lancer, est ce que t'as créer deux console eclipse, après il faut lancer le serveur en premier tu devrais voir "Le serveur est a l'écoute du port 2009" après lances ton client dans le deuxième console
Version imprimable
ça veut dire que ton serveur n'est pas lancer, est ce que t'as créer deux console eclipse, après il faut lancer le serveur en premier tu devrais voir "Le serveur est a l'écoute du port 2009" après lances ton client dans le deuxième console
normalement sous eclipse ça marche tu lances le serveur après lance le client
j'ai utilisé l'eclipse mais toujours le méme probléme
Code:
1
2
3
4
5
6
7
8
9
10
11
12 lient Try to connect to server in@: 127.0.0.1 on port :2009 Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:189) at Client.main(Client.java:22)
Si tu es sous Win, vire ton firewall.
le probléme dans le serveur tout d'abord
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Client Try to connect to server in@: 127.0.0.1 on port :3078 Exception in thread "main" java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) at java.net.Socket.connect(Socket.java:579) at java.net.Socket.connect(Socket.java:528) at java.net.Socket.<init>(Socket.java:425) at java.net.Socket.<init>(Socket.java:208) at tpjava.Serveur.main(Serveur.java:27)
Plop,
Si tu as repris le code donné précédemment, il ne pourra pas marcher car le code serveur et client ont été mal copié / collé (je pense). Tu as donc deux clients, ainsi tu ne peux pas te connecter.
Code serveur :
Code client :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int port = 3355; ServerSocket server = new ServerSocket(port); // On crée le serveur et on le démarre sur le port 3355 System.out.format("Server starts on %d.\n", port); while(true) { Socket socket = server.accept(); // Un client s'est connecté (CLIENT_NUMBER est une variable globale static servant de compteur) ++CLIENT_NUMBER; System.out.format("Client n°%d from %s is connected.\n", CLIENT_NUMBER, socket.getInetAddress().getHostAddress()); OutputStream outputStream = socket.getOutputStream(); outputStream.write(Integer.toString(CLIENT_NUMBER).getBytes()); // On envoie le numéro de connexion au client outputStream.close(); // On libère les ressources socket.close(); }
Ici le serveur se charge simplement d'envoyer le numéro du client qui s'est connecté, en incrémentant de 1 pour chaque client.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 int i = 0; int port = 3355; String host = "127.0.0.1"; // On se connecte / déconencte 5 fois du serveur while (i < 5) { Socket socket = new Socket(host, port); // On se connecte au serveur System.out.format("Connecting to %s on %d.\n", host, port); InputStream inputStream = socket.getInputStream(); byte[] content = new byte[inputStream.available()]; // On récupère le nombre de bits à lire inputStream.read(content); // On lit les données envoyées par le serveur System.out.format("I'm the %d client.\n", Integer.parseInt(new String(content))); // On affiche le numéro de client inputStream.close(); socket.close(); // On libère les ressources ++i; // On évite un while(1) }
Le client se connecte 5 fois (et récupère donc 1,2,3,4,5 la première fois) et affiche ce que le serveur lui renvoie.
Le code est "basique" et la conversion int -> byte est moche, mais c'est un exemple.
Avec ce code, tu n'auras aucun problème de connexion si tu lances le serveur en premier.
Bon courage
oui ça marche la connexion entre le client et le serveur mais j'ai un probléme comment je veux implémenté ce code
Code:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180 package scan; import java.io.*; import java.net.*; import java.io.File; import java.util.Calendar; import java.util.Date; public class Client { public Client() { } public static void main(String args[]) { //Déclaration des variables String systèmedexploitation; long totalMemory; long freeMemory; long maxMemory; String dateheur; long EspacedisqueTotal; long EspacedisqueUtiliser; long EspacedisqueLibre; String typesystème; Socket socket = null; while(true) try{ //création d'un socket client System.out.println("77777"); socket = new Socket("192.168.1.5", 3041); BufferedReader plec = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); //LES méthode de récupération des données local systèmedexploitation =System.getProperty("os.name"); typesystème= System.getProperty("os.arch"); File file = new File( "C:"); EspacedisqueTotal = file.getTotalSpace(); EspacedisqueLibre = file.getFreeSpace(); EspacedisqueUtiliser =(EspacedisqueTotal- EspacedisqueLibre); dateheur=Calendar.getInstance().getTime().toLocaleString(); totalMemory = Runtime.getRuntime().totalMemory(); freeMemory = Runtime.getRuntime().freeMemory(); maxMemory = Runtime.getRuntime().maxMemory(); File file1 = new File( "C:\\Program Files" ); File[] files = file1.listFiles(); String programmes=""; for ( int fileInList = 0 ; fileInList < files.length; fileInList++) programmes+=files[fileInList].getName()+" "; //**************************** adress mac String am=""; NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()); if (ni != null) { byte[] mac = ni.getHardwareAddress(); if (mac != null) { try{ for (int i = 0; i < mac.length-1; i++) am+=String.format("%02X",mac[i])+"-"; am+=String.format("%02X",mac[mac.length-1]); } catch(Exception e) { System.out.println(e.getMessage()); } } else System.out.println("Address doesn't exist or is not accessible."); } else System.out.println("Network Interface for the specified address is not found."); //**************************** pred.println(am+"_"+dateheur+"_"+systèmedexploitation+"_"+typesystème+"_"+EspacedisqueTotal+"_"+EspacedisqueUtiliser+"_"+EspacedisqueLibre+"_"+totalMemory+"_"+freeMemory+"_"+maxMemory+"_"+programmes); plec.readLine(); socket.close(); //-------------------------------------------- scan port new Thread(){ public void run() { int port=3009; String hostname = null; PrintWriter pred=null; Socket socket=null; for (port = 79; port <85; port++) try { socket = new Socket("192.168.1.5", 3016); pred = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); InetAddress remote = InetAddress.getByName("localhost"); hostname = remote.getHostName(); Socket s = new Socket(remote, port); pred.println("ouver on port " + port + " of " + hostname); s.close(); } catch (IOException ex) { try { pred.println("Error on port " + port + " of " + hostname); }catch(Exception f){ } } try { pred.println("mklgflkiod1"); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); //---------------------------------------------------------- //Fermeture de socket socket.close(); } catch(IOException e){ try { socket.close(); }catch(Exception e1) { } try { Thread.currentThread().sleep(4000); System.out.println("------"); } catch (InterruptedException e2) { // TODO Auto-generated catch block } } } ***********************************************************************