get adresse IP - C++ - Programmation
Marsh Posté le 24-07-2002 à 11:16:09
Là je suis sous Win mais je pense qu'avec un bind tu dois pouvoir récupérer les infos nécessaires.
Marsh Posté le 24-07-2002 à 11:35:14
Ben oui mais je n'ai pas d'autre solution à te proposer....
A moins que l'IP soit copiée dans une variable d'environnement au démarrage (là je délire peut-être un peu) auquel cas un getenv() est plus rapide...
Marsh Posté le 24-07-2002 à 13:00:58
ta deux solution que je connais
- soit tu utilise
Code :
|
qui te fou les ips dans ipCarteReseau
- soit tu crée une socket puis tu utilise la fonction ioctl je crois pour lire les info directement dans le module, il faut que recherche dans les sources de ifconfig
Marsh Posté le 24-07-2002 à 13:12:27
Pour la première solution avec gethostbyname, il faut le nom de la machine je crois
Le principe de cette fonction, c'est que tu fourni le nom de l'hôte et gethostbyname te renvoi l'@IP associée à ce nom d'hôte
Il me faudrait la même chose, mais sans être obligé de préciser le nom de la machine
Marsh Posté le 24-07-2002 à 13:32:33
Non finalement, je prends la première
Je fais d'abord nom_hote=system("hostname" );
et ensuite gethostbyname(nom_hote);
et ça marche
Je sais pas si c'est très bien de faire appel à la commande system dans un programme, mais pour le moment j'ai pas mieux
merci
Marsh Posté le 24-07-2002 à 14:43:22
ben je vois po vraiment comment tu peus faire autrement et puis c fait pour ca ...
Marsh Posté le 24-07-2002 à 14:45:23
Sous Windows y a aussi une fonction GetHostByName, mais en plus il y a une fonction GetHostName qui renvoie le nom du PC courant. Y a pas ça en Linux ?
Marsh Posté le 24-07-2002 à 15:32:25
J'ose espérer que ce n'est pas pour faire une connexion locale qu'il avait besoin de ça
Marsh Posté le 24-07-2002 à 15:50:52
En fait c'est une question plus philosophique qu'il n'y parait
l'adresse IP c'est ce qui permet de me contacter depuis l'ordinateur B distant.
Si B est sur mon brin, il peut utiliser une adresse de broadcast pour me contacter (pratique s'il ne connait pas mon adresse). Si je suis B, alors un localhost = 127.0.0.1 suffit. Si B est sur mon reseau local, il peut me contacter a l'adresse 196.x.x.x, adresse fixée par mon administrateur reseau.
Si B est sur de l'autre coté de la terre, c'est l'adresse que m'aura fourni mon fournisseur d'acces que je lui donnerai, parfois tous les gens de ma compagnie auront la meme adresse ou il y aura un nombre d'adresses limitées à répartir entre toutes les demandes de connexions.
Si j'ai deux (ou plus) cartes réseau alors je suis rattaché à deux brins, et suivant la position de B, je devrai lui fournir l'une ou l'autre adresse.
A+
LeGreg
Marsh Posté le 24-07-2002 à 15:55:29
par locale je voulais dire sur lui même (loopback)
Marsh Posté le 24-07-2002 à 15:56:12
une solution tres simple pour avoir son adresse distante
c'est d'interroger une machine sur internet et lui demander de quelle adresse semble provenir la connexion.
LeGreg
Marsh Posté le 24-07-2002 à 22:25:40
voila la deuxième solution (je suis po sur que ce soit complètement fiable, je vien juste de la faire)
Code :
|
par cette méthode la tu peus obtenire un nombre impréssionant de renseignement
Marsh Posté le 24-07-2002 à 10:46:24
Bonjour,
Sous linux, je voudrais écrire une fonction en langage C qui puisse m'afficher l'@IP de la machine sur laquelle tourne mon programme