Bonjour a vous tous,
je voulais savoir si il existe une fonction C++ permettant derécupérer l'adresse IP de l'utilisateur du programme.
merci d'avance.
Version imprimable
Bonjour a vous tous,
je voulais savoir si il existe une fonction C++ permettant derécupérer l'adresse IP de l'utilisateur du programme.
merci d'avance.
Salut !
tu récupères l'IP d'un machine... d'un sous-réseau, d'une passerlle, d'une entité réseau quoi... mais pas d'un utilisateur...
tu pourrais expliquer ce que tu souhaites faire exactement ? ;)
Salut !
Esque t'as vu ça :
http://c.developpez.com/faq/c/?page=reseau
?
++
Ca serait bien de mettre un lien dans la FAQ C++ aussi. Parce que je la vois passer toutes les deux semaines cette question.
Enfin, si tout le monde lisait la FAQ avant de poster...
en fait ce que je souhaite faire c'est récupérerl'adresse ip de la personne qui lance mon programme afin de l'afficher sur ma form dans un label.
mais meme le nom d'hote ne marche pas!
voici le code utilisé:
d'apres la msdn, le premiers parametre a donner a la fonction est un pointeur vers un buffer qui va recevoir la nom d'hote, le 2eme parametre est la taille du buffer.Code:
1
2
3
4 char *hostname; gethostname(hostname, 100); lab_hostname->Text = hostname;
en ce qui me concerne, je ne récupere rien avec cette méthode!!
Je vois nulle part dans ton code un buffer.Citation:
Envoyé par poporiding
Code:char hostname[100];
meme avec ce code, il n'y a pas de changement!
Code:
1
2
3
4 char hostname[100]; gethostname(hostname, 100); lab_hostname->Text = hostname;
On peut voir tout ton code ?
Tu as initialisé Winsock ?
Aussi, faut appeler gethostbyname, pour avoir l'IP à partir de l'host.
tout mon code est la ... le tout est placé dans un bouton, et l'action se lance quand je click dessus.
j'ai un bouton et un label
j'ai des includes et des pragma:
#include <Winsock2.h>
#pragma comment(lib, "ws2_32.lib")
Est-ce que tu affiches lab_hostname->Text au moins ?Citation:
lab_hostname->Text = hostname;
Je ne vois pas d'affichage...
Il suffit de passer hostname à la fonction PrintIp qui est dans la FAQ.
en fait le problème est que la fonction gethostname ne me retourne rien dans mon buffer, il reste vide.
c'est pourquoi rien ne s'affiche.
et le code lab_hostname->Text = "toto"; affiche toto sur le label et donc sur mon programme. Cependant ca ne marche pas avec mon hostname car je n'ai aucun retour de la fonction!
Il faut initialiser Winsock avec WSAStartup.
merci pour cette aide, j'arrive bien a voir le nom d'hote et les différentes IPs.
Cependant je n'arrive pas a envoyer mes différentes ip dans une comboBox.
Le problème vient de la convertion des données (impossible de convertir un char * en System::Object__gc *)
comment fait on pour convertir ce genre de donnée char * en System ... ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void PrintIp(char* HostName) { struct hostent *host; struct in_addr **adr; if((host = gethostbyname(HostName)) != NULL) { // parcourt des adresses IP for (adr=(struct in_addr **)host->h_addr_list; *adr; adr++) { Form1::richTextBox_route->AppendText(inet_ntoa(**adr)); Form1::richTextBox_route->AppendText("\n"); //le pb vient de la ligne suivante! Form1::comboBox_IP->Items->Add(inet_ntoa(inet_ntoa(**adr)); } } else { // echec de la resolution printf("Echec de la resolution de nom\n"); } }
en tous cas merci pour les liens, cela m'a bien aidé.
Merci de ne pas dupliquer les sujets sur un même problème.
:merci:
http://www.developpez.net/forums/sho...d.php?p=966231