在網絡中的多穴主機可能同時擁有多個IP地址,特別是在使用了動態主機地址分配時也很難知道主機上的IP地址是什麼。下面利用一段C程序來列舉出主機上的所有IP地址。下面是具體代碼:
void print_all_ip(void)
{
char szHostName[128];
const char* pszAddr;
struct hostent * pHost;
int i,j;
if( gethostname(szHostName, 128) == 0 )
{
pHost = gethostbyname(szHostName);
for( i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ )
{/*對每一個IP地址進行處理*/
pszAddr=inet_ntoa (*(struct in_addr *)pHost->h_addr_list[i]);
printf("%s ",pszAddr);/*打印*/
}
}
}
介紹Socket編程的文章已經很多,所以接下來只對相關內容進行簡單的講解, 函數gethostname將回返回給定主機名所對應的信息,在WinSock中struct hostent的定義如下:
struct hostent
{
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};