2014-03-29 120 views
0

我正在收集newtowrk信息。從msdn我有幾個apis和哪些工作正常。我想收集網絡連接的PC的所有IP地址。直到現在這是我得到的輸出。我沒有實現任何API /函數的IP地址。任何人都可以幫忙如何獲取vC++中網絡連接的PC的IP地址

平臺:500 名稱:GSI1 版本:6.2 類型:69639個 IP地址:

平臺:500 名稱:HELLO-PC 版本:6.1 類型:69635個 IP地址:

平臺:500 名稱:SCP 版本:6.3 類型:331779 IP地址:

平臺:500 名稱:SCP-PC 版本:6.1 類型:200711個 IP地址:

回答

2

您可以使用此代碼以檢索10個IP地址:

#include <winsock2.h> 

// Add 'ws2_32.lib' to your linker options 

WSADATA WSAData; 

// Initialize winsock dll 
if(::WSAStartup(MAKEWORD(1, 0), &WSAData)) 
{ 
    // Error handling 
} 

// Get local host name 
char szHostName[128] = ""; 

if(::gethostname(szHostName, sizeof(szHostName))) 
{ 
    // Error handling -> call 'WSAGetLastError()' 
} 

// Get local IP addresses 
struct sockaddr_in SocketAddress; 
struct hostent  *pHost  = 0; 

pHost = ::gethostbyname(szHostName); 
if(!pHost) 
{ 
    // Error handling -> call 'WSAGetLastError()' 
} 

char aszIPAddresses[10][16]; // maximum of ten IP addresses 

for(int iCnt = 0; ((pHost->h_addr_list[iCnt]) && (iCnt < 10)); ++iCnt) 
{ 


memcpy(&SocketAddress.sin_addr, pHost->h_addr_list[iCnt], pHost->h_length); 
    strcpy(aszIPAddresses[iCnt], inet_ntoa(SocketAddress.sin_addr)); 
} 

// Cleanup 
WSACleanup(); 

你可以找到其他例子Here

相關問題