//----------------------------------------------------------------
// INFOSERV.C
//----------------------------------------------------------------
#include <stdio.h>
#include <winsock2.h>
//----------------------------------------------------------------
int InfoServeur(LPCSTR lpServeurNomOuAdresse)
{
LPHOSTENT lpHost;
struct in_addr iaHost;
struct in_addr *pinAddr;
LPSTR lpAlias;
int i;
iaHost.s_addr = inet_addr(lpServeurNomOuAdresse);
if(iaHost.s_addr == INADDR_NONE)
lpHost = gethostbyname(lpServeurNomOuAdresse);
else
lpHost = gethostbyaddr((char *)&iaHost, sizeof(struct in_addr), AF_INET);
if(!lpHost)
return WSAGetLastError();
printf("\n\nINFOS SERVEUR");
printf("\n-------------");
printf("\nNom...........: %s", lpHost->h_name);
for(i = 0; ; i++)
{
lpAlias = lpHost->h_aliases[i];
if(!lpAlias) break;
printf("\nAlias.........: %s", lpAlias);
}
for(i = 0; ; i++)
{
pinAddr = ((LPIN_ADDR)lpHost->h_addr_list[i]);
if(!pinAddr) break;
printf("\nAdresse IP....: %s", inet_ntoa(*pinAddr));
}
printf("\n");
return 0;
}
//----------------------------------------------------------------
int main(int argc, char **argv)
{
int ret;
WSADATA wsaData;
if(argc != 2)
{
printf("\nSyntaxe: InfoServ ServeurNomOuAdresse\n");
return 0;
}
if(ret = WSAStartup(MAKEWORD(2,0), &wsaData))
{
printf("\nWSAStartup() erreur: %d\n", ret);
WSACleanup();
return 0;
}
if(ret = InfoServeur(argv[1]))
printf("\nInfoServeur() erreur: %d\n", ret);
WSACleanup();
return 0;
}