Probleme de connexion a un serveur
Bonjour,
J'ai écris les 2 classes suivantes pour tester une connexion client serveur.
Client.java :
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
| //-------------//
// Client.java //
//-------------//
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) throws Exception {
if(args.length != 2){
System.out.println("Usage : java Client ip port");
System.exit(0);
}
Integer port = Integer.parseInt(args[1]);
Socket s = new Socket(args[0], port);
//lire et ecrire du texte dans cette socket
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream socketOut = new PrintStream(s.getOutputStream());
// Informe l'utilisateur de la connection
System.out.println("Connecte sur " + s.getInetAddress() + ":"+ s.getPort());
//on envoie au serveur une chaine de caractere
StringBuilder chaine = new StringBuilder();
chaine.append("Ceci est un test");
socketOut.println(chaine);
//lit ce que le serveur a fait
String line = in.readLine();
System.out.println(line);
}
} |
Server.java :
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
| //-------------//
// Server.java //
//-------------//
import java.net.*;
import java.io.*;
public class Server implements Runnable {
public static void main(String[] args) throws Exception {
if(args.length != 1){
System.out.println("Usage : java Server port");
System.exit(0);
}
Integer port = Integer.parseInt(args[0]);
ServerSocket srv = new ServerSocket(port);
while(true) {
Thread t = new Thread(new Server(srv.accept()));
t.start();
}
// srv.close();
}
// Client socket in/out streams
BufferedReader clientInput_;
//OutputStream clientOutput_;
PrintStream clientOutput_;
public Server(Socket client) throws Exception {
clientInput_ = new BufferedReader(
new InputStreamReader(client.getInputStream()));
//clientOutput_ = client.getOutputStream();
clientOutput_ = new PrintStream(client.getOutputStream());
}
public void run() {
try {
String line = clientInput_.readLine();
System.out.println(line);
clientOutput_.println("Message recu");
clientInput_.close();
clientOutput_.close();
} catch(Exception e) { } // ignore
}
} |
J'ai testé le programme d'abord avec une adresse loopback comme ceci :
Code:
1 2 3
| D:\Documents and Settings\maxime\Desktop\Test>java Client 127.0.0.1 1000
Connecte sur /127.0.0.1:1000
Message recu |
Code:
1 2
| D:\Documents and Settings\maxime\Desktop\Test>java Server 1000
Ceci est un test |
Ensuite j'ai tenté de me connecter à un serveur nommé solare mais là, la connexion échoue alors
que le ping donnait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| D:\Documents and Settings\maxime\Desktop\Test>ping solare
Envoi d'une requête 'ping' sur solare.fr.intra.net [101.1.3.31] avec 32 octets d
e données*:
Réponse de 101.1.3.31*: octets=32 temps<1ms TTL=127
Réponse de 101.1.3.31*: octets=32 temps<1ms TTL=127
Réponse de 101.1.3.31*: octets=32 temps<1ms TTL=127
Réponse de 101.1.3.31*: octets=32 temps<1ms TTL=127
Statistiques Ping pour 101.1.3.31:
Paquets*: envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms |
Mais quand je lance le serveur :
Code:
1 2
|
D:\Documents and Settings\maxime\Desktop\Test>java Server 1000 |
Puis le client, j'obtiens :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| D:\Documents and Settings\maxime\Desktop\Test>java Client 101.1.3.31 1000
Exception in thread "main" java.net.ConnectException: Connection refused: connec
t
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Client.main(Client.java:23) |