Bonjour à tous,

Je vise extraire les noms d’hôte ainsi que les adresses IP des postes d'un réseau LAN et pour se faire j'ai utiliser une fonction que j'ai trouvé dans le forum qui retourne les noms d’hôte voila le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void __fastcall TForm1::EnumNetRes(NETRESOURCE *nr,int rtype,int rusage)
   {
   AnsiString temp;
   AnsiString temp2;
   HANDLE hEnum;
 
   /*La fonction WNetOpenEnum commence une énumération des ressources du réseau
	ou des connexions existantes.
	On peut continuer l'énumération en appelant la fonction WNetEnumResource.*/
   if (WNetOpenEnum(RESOURCE_GLOBALNET,rtype,rusage,nr,&hEnum)!=NO_ERROR)
	  return;
 
   DWORD Count=-1;
   DWORD BufferSize=1024;
   DWORD ReturnVal=0;
   NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
   ZeroMemory(NetRes,BufferSize);//Remplit un bloc de mémoire avec des zéros.
   for (;;)
	  {
 
	  ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);/*WNetEnumResource
	  poursuit l'énumération des ressources du réseau qui a débuté par un appel
	  à la fonction WNetOpenEnum.*/
	  if (ReturnVal==ERROR_MORE_DATA)
		 {
		 Count=-1;
		 delete []NetRes;
		 NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
		 ZeroMemory(NetRes,BufferSize);
		 ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
		 }
	  if (ReturnVal!=NO_ERROR)   break;
	  for (DWORD i=0;i<Count;i++)
		 {
			temp=NetRes[i].lpRemoteName;
 
		 if (NetRes[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)
		 {
			temp=NetRes[i].lpRemoteName;
			ListBox1->Items->Add(temp.SubString(3,temp.Length()));
			ShowMessage(temp.SubString(3,temp.Length()));
		 }
		 if (( NetRes[i].dwUsage & RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER)
			EnumNetRes(&NetRes[i],rtype,rusage);
		 }
	  if (ReturnVal==ERROR_NO_MORE_ITEMS)
		 {
		 delete []NetRes;
		 WNetCloseEnum(hEnum);
		 }
	  }
   delete []NetRes;
   WNetCloseEnum(hEnum); /*La fonction WNetCloseEnum termine une énumération
   des ressources du réseau qui a commencé par un appel à la fonction WNetOpenEnum*/
   }
et j'ai donc essayer de convertir un nom d’hôte en adresse IP au moyen de la fonction GetHostByName avec ce petit code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
hostent* remoteHost;
char* host_name;
host_name="PC-HANEN";
remoteHost = gethostbyname(host_name);
  /************/
   if (remoteHost == NULL) {
	   ShowMessage("gethostbyname() failed");
	} else {
	   ShowMessage(remoteHost->h_name);
	   unsigned int i=0;
	   while ( remoteHost -> h_addr_list[i] != NULL) {
		  ShowMessage(  inet_ntoa( *( struct in_addr*)( remoteHost -> h_addr_list[i])));
		  i++;
	   } }
qui m'affiche toujour gethostbyname() failed
Merci d'avance pour votre aide.
Cordialement,