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 :

[Réseaux] TCP/IP avec Routeur


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut [Réseaux] TCP/IP avec Routeur
    Bonjour, j'ai écris deux classes permettant de faire dialoguer deux machines en TCP/Ip:
    - un client
    - un serveur

    Celà marche parfaitement en localhost.

    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");
    	}
        }
    }
    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
    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");
    	}
        }
    }
    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.

    Voilà, j'espère avoir été assez clair sinon je peux expliquer davantage.

    Voilà merci.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Une solution est de parametrer ton routeur pour rediriger les messages reçu par le port (coté internet) associé à ton logiciel , vers la machine concerné du
    réseau local..

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut hihi
    Merci de ta réponse, en effet c possible, mais c'est uen solution coté hardware, je sais que je suis difficile mais jsuis réelement intéressé de trouver une solution au niveau du solfware.

    Y'a pas une classe, une methode qui permet d'acceder à une machine derriere une routeur?

    Merci.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut Re: hihi
    Citation Envoyé par fantomasmusic
    Y'a pas une classe, une methode qui permet d'acceder à une machine derriere une routeur?
    Si le routeur ne veut pas : non.
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  5. #5
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    quand un serveur est derriere un routeur, la seule possibilité pour qu'il accepte des connexion est que le routeur redirige le port vers la bonne machine, sauf si ton routeur est branché à un hub et pas un switch.

    il faut voir les différences entre routeur et switch, je crois que le hub fait broadcast lorsqu'il recoit un message, ce qui n'est pas le cas d'un switch.

    mais resolvé un hote situé derriere un routeur est a mon avis impossible si celui ci n'est pas déclaré par le dhcp du routeur.

    tu veux une solution software donc:
    utilise un serveur accessible (serversocket) et utilise le pc derriere le routeur pour faire la connextion (socket).
    et fais transiter les messages par cette socket.
    le cas inverse ne peut etre possible que s'il y a redirection
    Colère et Haine mènent à la Puissance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    Merci Keil, je vais m'orienter dans cette direction.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  2. Problème avec routeur SMC
    Par badekko dans le forum Hardware
    Réponses: 8
    Dernier message: 02/08/2005, 19h21
  3. Modem ADSL sur ordinateur en réseau avec routeur
    Par francis m dans le forum Dépannage et Assistance
    Réponses: 7
    Dernier message: 01/05/2005, 00h53
  4. erreur tcp/ip avec jdbc
    Par champion dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 03/04/2004, 14h32

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