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écupérer l' IP du client lors d'utilisation de sockets


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Points : 22
    Points
    22
    Par défaut récupérer l' IP du client lors d'utilisation de sockets
    je voudrais récupérer l'adresse ip du client qui se connecte au serveur,
    voila comment j'ai procédé dans mon code,

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    import java.io.*;
    import java.net.*;
     
     
    public class Serveur extends Object{
     
    	protected ServerSocket socketEcoute;
    	protected Socket socketService;
    	protected InputStream entreeSocket;
    	protected OutputStream sortieSocket;
     
     
    	// constructeur, créer un Serveur
    	public Serveur(int numPort){
    		try{
    		//création du socket d'écoute (port numPort)
    		socketEcoute = new ServerSocket(numPort);
     
    		}catch (Exception ex){
          			// erreur de connexion
          			System.err.println("Une erreur est survenue : "+ex);
          			ex.printStackTrace();
        		}	
    	}
     
    	// attente d'une connexion
    	public void attenteConnexion(){
    		try{
    			// attente d'une demande de connexion
    			socketService = socketEcoute.accept();
     
    			System.out.println("Nouvelle connexion : " + socketService); // pour test...
     
    			// récupération des flux d'entrée/sortie de la socket de service
    			entreeSocket = socketService.getInputStream();
    	        	sortieSocket = socketService.getOutputStream();		
     
    		}catch (IOException ex){
              		// fin de connexion
              		System.out.println("Une erreur est survenue : "+ex);
              		ex.printStackTrace();
    		}	
    	}
     
    	// methode qui retourne la chaine de caractere recue dans la socket ainsi que l'adresse de l'expéditeur, dans un 
    	// tableau de String, 1er element du tableau = adresse, 2eme element = message 
    	public String[] receptionMessage(){
     
    		String mess="";
    		String strIpClient="";
    		String tabMess[]=null;
     
    		tabMess=new String[2];
     
    		try{
     
    			// on charge le contenu du scoket dans un BufferedReader	
    			BufferedReader br = new BufferedReader(new InputStreamReader(entreeSocket));
    			// on lit le contenu du buffer
    			mess = br.readLine();
     
     
    		// afficher l'ip du client  ???
    			InetAddress ipClient=socketService.getInetAddress();
    			strIpClient=ipClient.getHostAddress();
     
     
    			// System.out.println("reception message de "+strIpClient+" : "+mess);	// on fait deja cette affichage dans l'appelant									
     
    		}catch (IOException ex){
              		// fin de connexion
              		System.out.println("Une erreur est survenue : "+ex);
      			ex.printStackTrace();
    		}	
     
    		tabMess[0]=strIpClient;
    		tabMess[1]=mess;
     
    		return tabMess;	
     
    	}
     
    ...
    // afficher l'ip du client ???
    InetAddress ipClient=socketService.getInetAddress();
    strIpClient=ipClient.getHostAddress();


    Mais hélàs j'ai l'impression que c'est l'IP du serveur et non celle du client
    que je récupère....

  2. #2
    Membre averti Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 339
    Points
    339
    Par défaut
    A mon avis, quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // attente d'une demande de connexion
             socketService = socketEcoute.accept();
    ça t'ouvre une connexion, mais la socketService est une socket qui se place côté serveur (parce que quand tu fais un get inputStream dessus par exemple, tu vas lire le InputStream du serveur, et non du client, tu comprends?).

    Je te donne donc une solution de GROS PORC, comme à mon habitude

    Le client envoie par son outputStream son IP (voire son hostname) au serveur qui le récupère gace à son inputStream.
    - Fais une recherche, c'est un conseil. Si je me mets à t'aider, tu vas pas t'en sortir

    - "Même avec les yeux grands ouverts, je n'y vois rien".

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour Zegota,

    Ce que je vais écrire n'est pas personnel Zegota. Mais j'ai l'impression que certaines personnes pensent que l'APIDOC, c'est pour les nulls.

    Je ne connait pas l'API de Java "par coeur" alors j'ai lu la documentation concernant la classe Socket. Et j'ai trouvé getRemoteSocketAddress en parcourant la liste des méthodes.
    Bien le bonjour chez vous
    Jowo

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Guignol: Pourquoi faire simple quand on peut faire compliquer :
    Bien le bonjour chez vous
    Jowo

  5. #5
    Membre averti Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par jowo
    Bonjour Zegota,

    Ce que je vais écrire n'est pas personnel Zegota. Mais j'ai l'impression que certaines personnes pensent que l'APIDOC, c'est pour les nulls.

    Je ne connait pas l'API de Java "par coeur" alors j'ai lu la documentation concernant la classe Socket. Et j'ai trouvé getRemoteSocketAddress en parcourant la liste des méthodes.
    Bravo j'applaudis

    J'avais quand même bien identifié le problème à la base. Et j'avais bien prévenu que je donnais une solution de gros porc
    - Fais une recherche, c'est un conseil. Si je me mets à t'aider, tu vas pas t'en sortir

    - "Même avec les yeux grands ouverts, je n'y vois rien".

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Bonjour Zegota,

    Ce que je vais écrire n'est pas personnel Zegota. Mais j'ai l'impression que certaines personnes pensent que l'APIDOC, c'est pour les nulls.

    Je ne connait pas l'API de Java "par coeur" alors j'ai lu la documentation concernant la classe Socket. Et j'ai trouvé getRemoteSocketAddress en parcourant la liste des méthodes.
    merci je vais essayer,

    je parcours souvent la doc java, mais arriver un moment je sature et je lis en diagonale...
    désolé :-S

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    J'ai eu le même probleme et je ne l'ai pas trouvé.
    Voila ce qu'il y a dans la doc:

    Returns the IP address string in textual presentation.

    Il sert à quoi ce forum ? A faire passer un examen aux gens ?

    clientSocket.getInetAddress().getHostAddress()


    pm

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    bon j'ai fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SocketAddress adrClient=socketService.getRemoteSocketAddress();
    String strIpClient=adrClient.toString();
    System.out.println(strIpClient);
    et comme la chaine récupérée était du type "/adresseIP:numdeport"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int deuxPoints=strIpClient.indexOf(":");
    strIpClient=strIpClient.substring(1,deuxPoints);
    System.out.println(strIpClient);
    merci tout le monde

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2015, 14h24
  2. Réponses: 3
    Dernier message: 27/03/2014, 17h54
  3. Application client/serveur en utilisant les sockets
    Par matheo600 dans le forum Réseau
    Réponses: 1
    Dernier message: 20/04/2008, 16h11
  4. Récupérer variables d'1 <form> et les utiliser dans X
    Par honeyz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2006, 11h39

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