多穴主機

多穴主機即multi-homed host。是計算機術語。

在網路中的多穴主機可能同時擁有多個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;

};

對於結構中的內容和其中對取得多個IP位址我們有用的是最後一個分量h_add_list,它是一個列表,通過它我們可以得到所有的IP位址。 下面舉出一些具體的套用實例,(1)在一個主機同時擁有IP位址,並且同時屬於兩個網段時,可以利用不同的IP位址產生網路半關聯,並向不同的網段產生連線請求。(2)在LAN山的主機利用撥接,可以得到由ISP動態分配的IP位址,這一IP位址可以和Internet上的其它主機連線。此外上面的代碼可以直接在UNIX下使用而不局限於WinSock。

相關詞條

熱門詞條

聯絡我們