Convertion des noms d’hôte des postes d'un réseau LAN en adresses IP
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:
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:
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 :cry:
Merci d'avance pour votre aide.
Cordialement,