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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    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 chevronné
    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
    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
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    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 chevronné
    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
    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
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 17
    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 chevronné
    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
    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" ?

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