Bonjour,
est-ce que quelqu'un pourrait m'indiquer comment s'obtient l'adresse IP d'un client.
Un client envoie une requete à un serveur.
Comment ce serveur peut-il obtenir l'IP du client qui l'a contacté ?
Merci
Bonjour,
est-ce que quelqu'un pourrait m'indiquer comment s'obtient l'adresse IP d'un client.
Un client envoie une requete à un serveur.
Comment ce serveur peut-il obtenir l'IP du client qui l'a contacté ?
Merci
Je ne sais pas comment marche ton serveur mais si tu utilise un ServerSocket quand tu utilise la méthode accept pour accepter une connexion tu récupère une Socket et tu utilise la méthode getLocalAddress()
En espérant t'aider
Est ce que tu peux preciser ton environnement ?Envoyé par parano
Quel est l'OS ?
Est ce que tu utilise un Serveur d'application ?
Est ce que tu as développé ce que tu appelles serveur ?
En gros plus t'es precis dans ta description plus tu auras une reponse claire et concise !!!![]()
Je travaille sous DebianEnvoyé par wace
Le plus simple est que je mette ce que j'ai codé![]()
J'ai réduit le code pour que ce soit plus clair (mais ça reste compilable).
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 //ConnectionClient.java import java.net.*; import java.io.*; // la classe Connection : c'est une thread public class ConnectionClient extends Thread { protected Socket client; public ConnectionClient(Socket client_socket) { client = client_socket; System.out.println(client.getInetAddress()); } }Ce que j'obtiens une fois que je lance le programme :
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 import java.io.*; import java.net.*; import java.util.*; public class Client extends Thread{ protected int port; protected ServerSocket listen_socket; // Cree un serveur TCP : c'est un objet de la classe ServerSocket // Puis lance l'ecoute du serveur. public Client(int port) { try { listen_socket = new ServerSocket(port); } catch (IOException e) { e.printStackTrace(); } System.out.println("Serveur lance sur le port " + port); this.start(); } public Client(){} // Le corps de la thread d'ecoute : // Le serveur ecoute et accepte les connections. // pour chaque connexion, il cree une thread // (objet de la classe Connection, // classe derivee de la classe Thread) // qui va la traiter. public void run() { try { while(true) { Socket client_socket = listen_socket.accept(); ConnectionClient c = new ConnectionClient(client_socket); } }catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args){ if(args.length == 1) { Integer port = Integer.parseInt(args[0]); new Client(port); } else { try{ Socket socket = new Socket("127.0.0.1", 2000); }catch(Exception e){ e.printStackTrace(); } } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 java Client 2000 Serveur lance sur le port 2000 /127.0.0.1Je n'obtient pas l'ip du client mais celui du serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part java Client
Salut,
En même temps si le client se connecte sur le 127.0.0.1 alors il utilise la boucle locale et son adresse est également 127.0.0.1...Envoyé par parano
a++
Ce que adiGuba veut te dire c'est que si tu utilise ton application en local ton client et ton serveur ont la même adresse : 127.0.0.1
Comment faire pour quoi ?Envoyé par parano
Pour avoir une adresse différente ?il faut un réseau et donc 2 machines (éventuellement virtuelles)
a++
Essaye comme je te l'avait mis de faire un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 client.getLocalAddress()
Partager