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 : 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
 
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 : 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
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.