Afficher son ip en c++
Résolu
zimeau
Messages postés
711
Date d'inscription
Statut
Membre
Dernière intervention
-
Maximizme Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
Maximizme Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous, je voudrai faire un logicielle en c++ qui genere une page html avec mon adresse ip dessus. j'ai deja le code qui genere la page html index.html avec mon ipconfig dessus. mais j'aimerai pouvoir isolé l'ip... quelqu'un saurait faire sa svp?
voici mon code actuel :
#include <fstream>
#include <cstdlib>
#include <sstream>
#include <iostream>
int main(){
const char *filename = "index.html";
// Ecrire l'en tête
{
std::ofstream ofs(filename);
if (ofs){
ofs << "<html>" << std::endl
<< "<body>" << std::endl;
ofs.close();
}else{
std::cerr << "ne peut pas ouvrir " << filename << std::endl;
return 1;
}
}
// Lancer la commande système
// Sous linux /sbin/ifconfig >> index.html
// Sous windows ipconfig /all >> index.html
{
std::ostringstream oss;
oss << "ipconfig >>" << filename;
system(oss.str().c_str());
}
// Ecrire la fin
{
cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;
if (ofs){
ofs << "</body>" << std::endl
<< "</html>" << std::endl;
ofs.close();
}else{
std::cerr << "ne peut pas ouvrir " << filename << std::endl;
return 1;
}
}
return 0;
}
voici mon code actuel :
#include <fstream>
#include <cstdlib>
#include <sstream>
#include <iostream>
int main(){
const char *filename = "index.html";
// Ecrire l'en tête
{
std::ofstream ofs(filename);
if (ofs){
ofs << "<html>" << std::endl
<< "<body>" << std::endl;
ofs.close();
}else{
std::cerr << "ne peut pas ouvrir " << filename << std::endl;
return 1;
}
}
// Lancer la commande système
// Sous linux /sbin/ifconfig >> index.html
// Sous windows ipconfig /all >> index.html
{
std::ostringstream oss;
oss << "ipconfig >>" << filename;
system(oss.str().c_str());
}
// Ecrire la fin
{
cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;
if (ofs){
ofs << "</body>" << std::endl
<< "</html>" << std::endl;
ofs.close();
}else{
std::cerr << "ne peut pas ouvrir " << filename << std::endl;
return 1;
}
}
return 0;
}
A voir également:
- Afficher son ip en c++
- Ethernet n'a pas de configuration ip valide - Guide
- Comment connaître son adresse ip - Guide
- Télévision ip - Guide
- Afficher appdata - Guide
- Ip local - Guide
7 réponses
Salut Zimeau.
J'essaye de faire la meme chose que toi à peu près
J'ai une idée, mais je sais pas si ça peux marcher
Je fais :
cout << "Votre adresse IP est : ";
if("IP.txt") // Si "IP.txt" existe
remove("IP.txt"); // Il est supprimé
system("ipconfig >> IP.txt"); // Récupère l'IP de la commande DOS "ipconfig" dans 1 fichier texte
FILE * F = fopen("IP.txt", "rb"); // Ouvre "IP.txt" sous le nom de F
if(!F) // Si IP.txt ne s'ouvre pas
{
system("cls"); // Nettoie l'écran
cout << "Erreur d'ouverture du fichier contenant votre IP !\n\n\n";
cout << "Appuyer sur une touche pour quitter";
_getch(); // Attend une touche pour quitter
exit(0); // Quitter
}
else // Sinon
{
}
Il me reste maintenant à coder pour accèder à la ligne "Adresse IP". Je pense utiliser fseek, à voir.
Bon courage, si je trouve, je te poste ma réponse.
J'essaye de faire la meme chose que toi à peu près
J'ai une idée, mais je sais pas si ça peux marcher
Je fais :
cout << "Votre adresse IP est : ";
if("IP.txt") // Si "IP.txt" existe
remove("IP.txt"); // Il est supprimé
system("ipconfig >> IP.txt"); // Récupère l'IP de la commande DOS "ipconfig" dans 1 fichier texte
FILE * F = fopen("IP.txt", "rb"); // Ouvre "IP.txt" sous le nom de F
if(!F) // Si IP.txt ne s'ouvre pas
{
system("cls"); // Nettoie l'écran
cout << "Erreur d'ouverture du fichier contenant votre IP !\n\n\n";
cout << "Appuyer sur une touche pour quitter";
_getch(); // Attend une touche pour quitter
exit(0); // Quitter
}
else // Sinon
{
}
Il me reste maintenant à coder pour accèder à la ligne "Adresse IP". Je pense utiliser fseek, à voir.
Bon courage, si je trouve, je te poste ma réponse.
salut
vas directement sur http://www.address-ip.com/
il te donnera tout se ke tu veu savoir
voila a+
vas directement sur http://www.address-ip.com/
il te donnera tout se ke tu veu savoir
voila a+
merci mais mon but n'est pas de savoir mon adresse ip, je veut un logicielle qui genere mon ip dans une page html que j'enverai sur un serveur, pour que certaine personne puisse la recuperer. j'ai creer la fonction qui envera mon fichier sur le serveur, j'ai recuperer le code qui me genere la page avec les information d'ipconfig mais j'aimerai isolé mon adresse et ne pas afficher le reste des info d'ipconfig... merci!
Voilà ma solution complete ;)
void AfficheMonIP() // Récupère mon adresse IP
{
cout << "\n**** Votre adresse IP est : ";
if("IP.txt") // Si "IP.txt" existe
remove("IP.txt"); // Il est supprimé pour mettre le fichier à jour et ne pas avoir plusieurs adresses IP dedans
system("ipconfig >> IP.txt"); // Récupère l'IP de la commande DOS "ipconfig" dans 1 fichier texte
FILE * F = fopen("IP.txt", "rb"); // Ouvre "IP.txt" sous le nom de F
if(!F) // Si IP.txt ne s'ouvre pas
{
system("cls"); // Nettoie l'écran
cout << "Erreur d'ouverture du fichier contenant votre IP !\n\n\n";
cout << "Appuyer sur une touche pour quitter...";
_getch(); // Attend une touche pour quitter
exit(0); // Quitter
}
else // Sinon
{
int Len =_filelength(_fileno(F)); // Récupère la longueur d'un fichier et le descripteur du fichier F
char * Buffer = new char[Len+1]; // Allocation dynamique pour un buffer
fread(Buffer, sizeof(char), Len, F); // Lis dans le buffer
char * p = strstr(Buffer, "1"); // Renvoie un pointeur sur la 1ère occurence de l'IP cherchée
printf("%.13s ****\n\n", p); // Affiche seulement 13 caractères de la chaîne
delete [] Buffer; // Supprime l'allocation dynamique du buffer
fclose(F); // Ferme le fichier
}
}
void AfficheMonIP() // Récupère mon adresse IP
{
cout << "\n**** Votre adresse IP est : ";
if("IP.txt") // Si "IP.txt" existe
remove("IP.txt"); // Il est supprimé pour mettre le fichier à jour et ne pas avoir plusieurs adresses IP dedans
system("ipconfig >> IP.txt"); // Récupère l'IP de la commande DOS "ipconfig" dans 1 fichier texte
FILE * F = fopen("IP.txt", "rb"); // Ouvre "IP.txt" sous le nom de F
if(!F) // Si IP.txt ne s'ouvre pas
{
system("cls"); // Nettoie l'écran
cout << "Erreur d'ouverture du fichier contenant votre IP !\n\n\n";
cout << "Appuyer sur une touche pour quitter...";
_getch(); // Attend une touche pour quitter
exit(0); // Quitter
}
else // Sinon
{
int Len =_filelength(_fileno(F)); // Récupère la longueur d'un fichier et le descripteur du fichier F
char * Buffer = new char[Len+1]; // Allocation dynamique pour un buffer
fread(Buffer, sizeof(char), Len, F); // Lis dans le buffer
char * p = strstr(Buffer, "1"); // Renvoie un pointeur sur la 1ère occurence de l'IP cherchée
printf("%.13s ****\n\n", p); // Affiche seulement 13 caractères de la chaîne
delete [] Buffer; // Supprime l'allocation dynamique du buffer
fclose(F); // Ferme le fichier
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui, mais il est aussi possible de passer par la lib soscket du C.
D'ailleur, c'est ce que cherchait à faire zimeau il me semble avec la commande cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;
D'ailleur, c'est ce que cherchait à faire zimeau il me semble avec la commande cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;
merci bien de ta solution Maximizme, et aussi Char Snipeur avec ton alternative a la recuperation de l'ip ^^ j'ai trouvé une autre solution pour associer une ip mobile a un nom de dommaine grace a no-ip.com merci en tout cas pour vos solution qui reste interessante a etudié!
La mienne est balo, le seul truc relou à la limite sur laquelle j'ai galéré, c'est pour afficher que l'IP contenue dans le buffer et pas le reste (masque, paserelle,...). D'où le %.13s. Le point est important, j'ai galéré pour trouver la solution.
Effectivement la solution de Char Snipeur me semble + judicieuse :D. Moi je ne suis que débutant en progra...
Effectivement la solution de Char Snipeur me semble + judicieuse :D. Moi je ne suis que débutant en progra...