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
Version imprimable
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 ?Citation:
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 !!! :D
Je travaille sous DebianCitation:
Envoyé par wace
Le plus simple est que je mette ce que j'ai codé :mrgreen:
J'ai réduit le code pour que ce soit plus clair (mais ça reste compilable).
Code:
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:
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:
1
2
3 java Client 2000 Serveur lance sur le port 2000 /127.0.0.1
Je n'obtient pas l'ip du client mais celui du serveurCode: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...Citation:
Envoyé par parano
a++
Essaye comme je te l'avait mis de faire un
Code:
1
2 client.getLocalAddress()
Ca donne le même résultat.Citation:
Envoyé par guigui5931
Comment faire alors ?Citation:
Envoyé par adiGuba
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 ?Citation:
Envoyé par parano
Pour avoir une adresse différente ? :arrow: il faut un réseau et donc 2 machines (éventuellement virtuelles)
a++