[Réseaux] TCP/IP avec Routeur
Bonjour, j'ai écris deux classes permettant de faire dialoguer deux machines en TCP/Ip:
- un client
- un serveur
Celà marche parfaitement en localhost.
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
|
import java.net.*;
import java.io.PrintWriter;
import java.io.*;
/* Socket permet de créer un client uilisant le protocole TCP */
public class EchoClient {
public EchoClient() throws Exception{
String HOST = "localhost";
int PORT = 7000;
InetAddress ina = InetAddress.getByName(HOST);
/* envoie des données */
Socket client = new Socket(HOST,PORT);
PrintWriter pw = new PrintWriter(client.getOutputStream());
pw.println("LoLoL");
pw.flush();
System.out.println("sending data ... "+ina.getHostAddress()+":"+client.getPort());
client.close();
/* réaffiche ce que renvoie le server */
System.out.println("receive data...");
System.out.println("lol");
ServerSocket server = new ServerSocket(7001);
Socket appelClient = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(appelClient.getInputStream()));
System.out.println(in.readLine());
server.close();
appelClient.close();
}
public static void main (String[] args){
try{
EchoClient ec = new EchoClient();
}catch(Exception e){
e.printStackTrace();
System.err.println("ERREUR FATALE");
}
}
} |
Le serveur
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
| import java.net.*;
import java.io.*;
/* Socket permet de créer un server uilisant le protocole TCP */
public class EchoServer {
public EchoServer() throws Exception{
System.out.println("waiting data...");
ServerSocket server = new ServerSocket(7000);
Socket appelClient = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(appelClient.getInputStream()));
String s = in.readLine();
System.out.println("=>"+s);
server.close();
appelClient.close();
/* renvoie des données */
System.out.println("sending data...");
Socket client = new Socket("localhost",7001);
PrintWriter pw = new PrintWriter(client.getOutputStream());
pw.println("=>"+s);
pw.flush();
client.close();
}
public static void main (String[] args){
try {
EchoServer es = new EchoServer();
}catch(Exception e){
e.printStackTrace();
System.err.println("ERREUR FATALE");
}
}
} |
Ce programme fonctionne tres bien en localhost, mais je n'arrive pas à faire communiquer sur une machine distante. A la place de "localhost", je fourni l'adresse IP distante, mais en faites, c'est celle du routeur, et je cherche à trouver un moyen d'acceder à une machine connecté au routeur...donc pas la meme adresse IP que celle du routeur.
Voilà, j'espère avoir été assez clair sinon je peux expliquer davantage.
Voilà merci.