Socket + IP + Routeur + OS différents = catastrophe
Bonjour,
Ca va faire quelques jours que j'essaye de connecter deux ordinateurs distants sans y arriver. Un PC est sous Windows et est connecté à Internet via un routeur, l'autre ordinateur est sous Ubuntu et utilise également un routeur pour se connecter.
Tout d'abord récupérer l'ip n'est pas une chose facile, la méthode la plus fréquente ne renvoie pas le bon résultat et donne des résultats différents:
Code:
1 2
| InetAddress IP = InetAddress.getLocalHost();
String ip = IP.getHostAddress(); |
Sur Ubuntu, l'ip reçue est 127.0.1.1
Sur Win XP: 192.168.1.40
Donc j'ai l'ip local dans un cas, l'ip du réseau attribuée par le routeur dans l'autre cas. Pour pouvoir connecter deux PC entre eux à distance, il me faut l'ip fournie par le provider.
Pour cela, je récupère l'ip via un site web (qui contient un script php qui retourne l'ip du visiteur). L'ip reçue est bien la bonne, mais l'ip est la même pour tout les PC du réseau !
Quand on essaye cette méthode en local, il retourne connection refused et avec des PC distants, le programme freeze.
Code:
1 2 3 4 5 6
| //côté client
Socket client;
try{
client = new Socket(IP,Port);
}
catch(Exceptione){System.err......;} |
Code:
1 2 3 4 5 6 7
| //côté serveur
ServerSocket server;
server = new ServerSocket(8080);
Socket clientSocket = null;
clientSocket = server.accept();
JOptionPane.showMessageDialog(null,"Un nouveau client est connecté, son ip: "+clientSocket.getInetAddress().toString(),"",JOptionPane.INFORMATION_MESSAGE);
clientSocket.close() |
Comment pourrais-je faire pour que ca se connecte dans tout les cas de figure? (OS différents, routeur, plusieurs ordinateurs connectés/routeur).
Merci par avance pour votre aide.