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 / Exemple :
#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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.