如何在vc ++中获取网络连接pcs的IP地址

时间:2014-03-29 05:36:42

标签: c++ visual-c++

我正在收集新的信息。从msdn我得到了几个apis,哪些成功。我想收集网络连接的所有IP地址。直到现在这是我得到的输出。我没有实现IP地址的任何API /功能。任何人都可以提供帮助。

平台: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地址:

1 个答案:

答案 0 :(得分: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