Bonjour,

Je suis actuellement face à un problème que je n'arrive pas à expliquer :

J'ai un programme se divisant en 2 parties : un serveur, et un client. J'utilise RMI pour faire communiquer les 2.

Si le client est sur le même réseau que le serveur, la communication se fait sans problème. En revanche, si ce n'est pas le cas, j'ai une erreur lorsque je tente de m'authentifier au serveur.

Pourquoi ?

Ci-dessous des informations plus précises de mon problème :

L'exception levée est ConnectException.

L'adresse IP "bloquante" est celle du client.

En cherchant sur internet, j'ai vu qu'il est préférable de passer par le port 80 plutôt que par le port 1099 (port par défaut rmi). J'utilise donc ce port néanmoins ça ne résout pas le problème.

A l'aide de wireshark, je vois que les données sont échangées entre le port 80 du serveur et le port 52720 du client. Je n'ai aucune idée d’où vient ce port. D'ailleurs ça je m'attendait à voir le client utiliser le port 80 aussi, puisque j'ai indiqué 80 au moment du Naming.bind du client.

Voici le code que j'ai utilisé pour démarrer le client:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public LancerClient() {
 
  System.setSecurityManager(new RMISecurityManager());
  LocateRegistry.createRegistry(80);
  IServeur iServeur = (IServeur) Naming.lookup(rmi://255.255.255.255:80/serveur);
 
  new FAuthentification(iServeur);
 
}
Dernière précision, j'ai un fichier .policy qui donne toutes les permissions (grant security.rmi.AllPermission ou quelque chose dans ce goût la)

Auriez-vous une indication du pourquoi je ne peux pas communiquer depuis un réseau différent ?

Un grand merci pour toute aide apportée !