Bonjour, j'ai écris deux classes permettant de faire dialoguer deux machines en TCP/Ip:
- un client
- un serveur
Celà marche parfaitement en localhost.
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
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"); } } }
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.
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"); } } }
Voilà, j'espère avoir été assez clair sinon je peux expliquer davantage.
Voilà merci.
Partager