begin process at 2010 02 10 11:05:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > EXEMPLE SIMPLE DE RÉSOLUTION DE NOM DE DOMAINE [CODE EN C]

EXEMPLE SIMPLE DE RÉSOLUTION DE NOM DE DOMAINE [CODE EN C]


 Information sur la source

Note :
Aucune note
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :16/03/2003 Date de mise à jour :16/03/2003 02:36:44 Vu :3 789

Auteur : Viper31

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Voila je me permet de mettre cette source meme ci d'autres sources l'utilise deja , parce que franchement j'ai un peu galerer pour y arriver "proprement" et simplement.

avec en prime un petite description super simpliste de la fonction gethostbyname et la structure hostent :

Source

  • #include <stdlib.h>
  • #include <winsock2.h>
  • /*
  • ----------------------------------------
  • Prototype de la fonction gethostbyname :
  • ----------------------------------------
  • hostent *gethostbyname(const char *name);
  • -> renvoie un pointeur sur une structure hostent.
  • ------------------------------------
  • Description de la stucture hostent (host entity ??):
  • ------------------------------------
  • struct hostent
  • {
  • char *h_name; // Nom de domaine primaire
  • char **h_aliases; // Alias ??
  • int h_addrtype; // ???
  • int h_length; // Longueur des ips
  • char **h_addr_list; // Liste d'ips pour le nom de domaine
  • };
  • #define h_addr h_addr_list[0] // Definit directement l'ip exploitable
  • */
  • int main() {
  • WSADATA WSAData;
  • struct hostent *host;
  • struct in_addr **a;
  • char req_host[255];
  • printf("Entrer l'Adresse (DNS) de l'hote : ");
  • scanf("%s",req_host);
  • if (WSAStartup(MAKEWORD(2,0), &WSAData) == SOCKET_ERROR) {
  • printf("\nProbleme de Winsock ...\n\n");
  • return 0;
  • }// Etape obligatoire pour la programmation socket
  • if(host = gethostbyname(req_host)) {
  • // Test pour savoir si l'host a été resolu
  • printf("\nDNS resolu ... \n\n");
  • printf("Nom\t\t\t: %s\n", host->h_name);
  • printf("Type d'adresse\t\t: %u\n", host->h_addrtype);
  • printf("Taille d'adresse\t: %u\n", host->h_length);
  • for (a=(struct in_addr **)host->h_addr_list; *a; a++) {
  • printf("Adresse(s) Ip\t\t: %s\n", inet_ntoa(**a));
  • } // Boucle sur toute les ips du nom de domaine
  • printf("\n");
  • }
  • else printf("\nResolution DNS impossible ...\n\n");
  • WSACleanup(); // On Cleanup koâ :)
  • system("pause");
  • return 1;
  • }
#include <stdlib.h>
#include <winsock2.h>

/*
---------------------------------------- 
Prototype de la fonction gethostbyname :
----------------------------------------

hostent *gethostbyname(const char *name);  
	-> renvoie un pointeur sur une structure hostent. 
 
------------------------------------ 
Description de la stucture hostent (host entity ??):
------------------------------------

struct hostent
{
  char *h_name;		// Nom de domaine primaire
  char **h_aliases;		// Alias ??
  int h_addrtype;		// ???
  int h_length;		// Longueur des ips
  char **h_addr_list;		// Liste d'ips pour le nom de domaine
};

#define h_addr h_addr_list[0]  	// Definit directement l'ip exploitable

*/

int main() {
	WSADATA WSAData;
	
	struct hostent *host;
	struct in_addr **a;

	char req_host[255];
	
	printf("Entrer l'Adresse (DNS) de l'hote : ");
	scanf("%s",req_host);

	if (WSAStartup(MAKEWORD(2,0), &WSAData) == SOCKET_ERROR) {
		printf("\nProbleme de Winsock ...\n\n");
		return 0;
  	}// Etape obligatoire pour la programmation socket

	if(host = gethostbyname(req_host)) { 
	// Test pour savoir si l'host a été resolu
		printf("\nDNS resolu ... \n\n");
		
		printf("Nom\t\t\t: %s\n", host->h_name);
		printf("Type d'adresse\t\t: %u\n", host->h_addrtype);
		printf("Taille d'adresse\t: %u\n", host->h_length);
		
		for (a=(struct in_addr **)host->h_addr_list; *a; a++) {
			printf("Adresse(s) Ip\t\t: %s\n", inet_ntoa(**a));
		} // Boucle sur toute les ips du nom de domaine
		printf("\n");
		
	}
	else printf("\nResolution DNS impossible ...\n\n");
	
	WSACleanup(); // On Cleanup koâ :)
	system("pause");
	return 1;
}

 Conclusion

Pour compiler correctement , il faut rajouter -lwsock32 dans les options du compilateur (pour ceux qui saurait pas encore :-) )


C'est une etape importante pour un programme qui gera autre chose que des ip ;-) (client quelconque)


En esperant en aider quelques uns


 Sources de la même categorie

Source avec Zip TIM_RESEAU, CLASSES POUR RESEAU COMPLET par williamallas
Source avec Zip INTERNET IP FINDER TROUVER VOS ADRESSE IP (INTERNET) par xmustapha
Source avec Zip CLIENT/SERVEUR AVEC TSOCKETSERVER & TCLIENTSOCKET par xmustapha
Source avec Zip REMOTE SHELL GEN par ganjarasta
PROXY IRC SIMPLE (WINDOWS/WINSOCK) par _michel

Commentaires et avis

Commentaire de Draven le 16/03/2003 14:38:20

a ce que je vois on a trouvé la meme solution. c a d le gethostbyname.
++

Commentaire de RaphAstronome le 09/12/2004 14:35:24

Je l'ai testé et ca ne marche pas : "Resolution DNS impossible ...".

Je suis conecté a Internet derriere un routeur

J'ai testé des adresses comme "www.google.fr", "google.fr", le réseau local, "localhost" : rien ...

Commentaire de Viper31 le 09/12/2004 23:46:42

ouais je sais , ce code est assez patétique ^^
je vais le mettre a jour rapido car j'en ai honte en le relisant

Commentaire de minet03 le 07/01/2005 18:07:53

le code marche chez moi, juste qu'il manque stdio.h !!!!!
mais sinon c'est pas mal, je voulais faire un code comme cela, mais finalement je n'ai plus besoin !!!!

Commentaire de minet03 le 08/01/2005 14:30:29

sinon j'aurais aimé que tu fasses quelque chose de mieux expliqué parce que là, j'essay de mettre ta source dans mon code, et je ne comprend pas comment faire (au niveau de l'IP) parce que c'est plein de pointeur.
Voilà donc si tu pouvais soit mieux expliquer soit refaire un truc qui récupère la première IP par exemple. Merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales