IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Connexion serveur / client en utilisant l'adresse IP externe


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut Connexion serveur / client en utilisant l'adresse IP externe
    bonjour
    Je suis en train de créer un client pour se connecter à un serveur en utilisant son adresse ip externe j'ai utilisé la lib upnp pour la redirection des ports côté serveur, j'ai vérifié les ports à l'aide
    http://www.yougetsignal.com/tools/open-ports/
    le port externe s'ouvre lorsque je lance le serveur . le serveur et le client sont sur ​​deux ordinateurs diffrents mais ils sont connectés au même routeur
    le client peut se connecter au serveur en utilisant son adresse locale. mais pas avec l'adresse IP externe
    le pare-feu désactivé sur les deux machines
    mais quand je lance le serveur, puis le client j'ai obtenu :
    java.net.ConnectException: Connection refused: connect

    l'erreur vient du client
    le serveur fonctionne bien parce que quand je vérifie le port avec le vérificateur port, il l'obtenir comme une demande de connexion

    code du 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
    public class upnp {
     
     
    	public static void main(String[] args) {
    		String chaine=null;
    		InternetGatewayDevice dev=null;
    		ServerSocket Ssocket=null;
    		Socket Csocket=null;
     
    		try{
    		      dev = InternetGatewayDevice.getDevices( 1000 )[ 0 ];
     
    				chaine=dev.getExternalIPAddress();
    			   System.out.println(dev.addPortMapping("sbs-server", null, 1020, 1020,"192.168.2.36", 0, "TCP"));
    			   System.out.println(chaine);
     
    		}catch(IOException | UPNPResponseException e){System.out.println("erreur");}
     
    		try{
    			Ssocket=new ServerSocket(1020);
    		}catch(IOException e){
    			e.printStackTrace();
    		    try{
    			    dev.deletePortMapping(null, 1020, "TCP");
    		    }catch(IOException | UPNPResponseException b){b.printStackTrace();}		
    		}
     
    		try{
    			System.out.println("waiting for client ...");
    			Csocket=Ssocket.accept();
    			System.out.println("a client is ready");
    		}catch(IOException e){e.printStackTrace();
    		  try{
    		   	 Ssocket.close();
    			 Csocket.close();
    		  }catch(IOException a){a.printStackTrace();}
    		}
     
    		try{
    			  dev.deletePortMapping(null, 1020, "TCP");
    		}catch(IOException | UPNPResponseException b){b.printStackTrace();}	
    	}
    }
    code du client
    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
    public class client {
     
    	public static void main(String[] zero) {
    		Socket socket;
    		try {
    			 socket = new Socket("41.226.78.85",1020);
    			 System.out.println("connected !");
    	         socket.close();
    		}catch (UnknownHostException e) {
    			e.printStackTrace();
    		}catch (IOException e) {
     
    			e.printStackTrace();
    		}
    	}
    }
    please help

  2. #2
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Bonsoir,
    si j'ai bien compris :
    Avec les adresses locales tout fonctionne.

    Avec l'adresse Internet,
    le client répond java.net.ConnectException: Connection refused: connect

    ce qui arrive souvent si aucun service ne répond sur le port, à l'adresse indiquée...

    Je ne connais pas exactement la config de ton réseau... donc je me trompe peut-être.

    Pour moi, l'adresse Internet que tu as donnée est l'adresse de ton routeur (41.226.X.X), pas celle de ton serveur.
    Donc ton client fait une requête sur le port 1020 vers l'adresse externe de ton routeur internet... et il se peut que ça s'arrête là !

    En effet, as-tu défini une route sur ton routeur pour dire que les requêtes entrantes sur le port 1020 devaient être redirigées vers l'adresse interne 192.168.2.36, sur le même port ?

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    bonjour
    merci pour votre réponse
    je suis connecté via un routeur SMC avec une adresse IP n'est pas statique, mais cela ne fait aucune différence, car l'adresse IP ne change pas seulement quand je redémarre le routeur
    à propos de l'ip que j'ai donné au client, oui, c'est l'ip du routeur, mais comme vous pouvez le voir, j'ai utilisé cette methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dev.addPortMapping ("sbs-serveur", null, 1020, 1020, "41.226.78.85", 0, "TCP")
    de sorte que toute requête arrive sur l'adresse ip de routeur sur le bon port, seront redirigés vers l'adresse IP du serveur sur le port souhaité

    De plus, le upnp est une bibliothèque qui rendent possible la redirection de port par programmation, sans toucher au routeur

    normalement, port forwarding tester (http://www.yougetsignal.com/tools/open-ports/) envoie une requête vers l'ip du routeur sur le port souhaité, (dans mon cas le port externe que j'ai ouvert)
    et le serveur détecte la demande et l'accepter et bien sûr le site montre que le port est ouvert seulement quand je démarre le serveur ce qui signifie que le serveur fonctionne très bien

    mais c'est toujours la même chose pour le client, il ne peut pas se connecter à l'adresse IP externe
    s'il vous plaît aidez-moi

  4. #4
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Bonjour,
    dans ce cas, si ton routeur est upnp, la ligne de portMapping que tu dois ajouter est plutôt :

    dev.addPortMapping ("sbs-serveur", null, 1020, 1020, "192.168.2.36", 0, "TCP")
    que le client accèdes de l'extérieur ou de l'intérieur de ton réseau.

    le addPortMapping dit à ton routeur que ce qu'il reçoit de l'extérieur sur le port 1020, il le transfert en interne à l'adresse 192.168.2.36 sur le même port

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je suis désolé j'ai fait une erreur dans mon dernier post, j'ai déjà 192.168.2.36 qui est l'adresse IP de l'ordinateur où se trouve le serveur

  6. #6
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Quand tu fais une requête via http://www.yougetsignal.com/tools/open-ports/ vers l'adresse de ton serveur sur le port 1020, avec le serveur démarré,
    le serveur te répond "a client is ready" ?

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    oui exactement quand je fais une demande via http://www.yougetsignal.com/tools/open-ports/ le site utilise mon ip externe pour se connecter au serveur qui se trouve derrière un routeur et écoute sur le port 1020

    quand je fais le test le serveur répond par "a client is ready" see !!!
    je ne vois pas la différence, le client utilise la même adresse IP avec le port externe exact, j'ai même les rendre égaux (le port externe et interne)
    mais c'est toujours la même résultat

  8. #8
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Peux tu mettre la trace complète de l'exception côté client
    Merci

  9. #9
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at client.main(client.java:12)

    thank you !! and for your time

  10. #10
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Essaye de changer de port : 4003 par ex

  11. #11
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    merci
    j'ai essayé mais c'est toujours le même résultat
    J'ai essayé tellement de ports différents, mais toujours le même résultat
    Je suis vraiment coincé sur ce point !!

  12. #12
    En attente de confirmation mail
    Homme Profil pro
    Ensimag
    Inscrit en
    Octobre 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ensimag
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 57
    Points : 97
    Points
    97
    Par défaut
    bonjours essayes de désactiver le firewall

  13. #13
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    logiquement, sghaierbs a dit :
    le pare-feu désactivé sur les deux machines

  14. #14
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    1- J'ai ajouté une exception dans le pare-feu pour le java (TM) Platform SE binary
    2- j'ai désactivé le pare-feu
    rien n'a changé

  15. #15
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    s'il vous plait est ce qu'il ya d'autres suggestion ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    2 questions :
    • Es-tu certain d'avoir activé upnp sur ton routeur ?
    • Pourquoi n'essayes-tu pas d'ajouter une route dans la config du routeur ?

  17. #17
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    oui l'upnp est activé et la méthode addPortMapping() renvoie true ce qui signifie que le port est ouvert
    J'essaie d'utiliser upnp pour que la redirection des ports sera plus facile et automatiquement. si quelqu'un veut utiliser le serveur il n'est pas nécessaire d'ouvrir des ports ...

  18. #18
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    ok,
    peux tu ajouter ta route en l'ajoutant avec le jar PortMapper en ligne de commande, plutôt qu'avec ton serveur (juste pour tester)

    En faisant en mode console :

    java -jar PortMapper-1.9.5.jar
    et regarder ce que disent les logs du programme (PortMapper)

    et essayer ensuite la connexion (entre ton serveur et ton client)

  19. #19
    Candidat au Club
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    mon ip interne a changé en raison du redémarrage du routeur
    INFO Using default configuration directory 'C:\Users\sbs\AppData\Roaming\UnknownApplicationVendor\PortMapper'.
    INFO Creating router factory for class org.chris.portmapper.router.sbbi.SBBIRouterFactory
    INFO Searching for routers...
    INFO Connected to router 7901WBRA2
    INFO Got internal host name '192.168.2.1' for router.
    INFO Got external IP address 41.226.xx.xxx for router.
    INFO Get all port mappings...
    INFO Found 9 mappings


    protocol external port internal client internal port discription
    TCP 1020 192.168.2.19 1020 sbs-server


    remote host est vide !
    Images attachées Images attachées  

  20. #20
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    oui, c'est ok
    Le routeur est bien configuré...
    on en revient donc au parefeu...
    tu es certain que tu n'as rien de ce côté (parefeu windows, antivirus...)

    et que donne en ligne de commande un telnet sur ton ip publique :

    telnet 41.226.xx.xxx 1020

Discussions similaires

  1. comment initier une connexion serveur-client
    Par nadia mr dans le forum Développement
    Réponses: 2
    Dernier message: 09/04/2014, 15h01
  2. TP : Connexion serveur - client et envoi message
    Par leilald dans le forum Réseau
    Réponses: 5
    Dernier message: 13/12/2013, 21h43
  3. Réponses: 0
    Dernier message: 08/05/2012, 11h11
  4. Connexion serveur/client : exception lors du lancement du client
    Par khyllou dans le forum Général Java
    Réponses: 3
    Dernier message: 07/02/2010, 11h13
  5. Réponses: 6
    Dernier message: 25/08/2006, 20h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo