c++ - 如何在vc++中获取网络连接电脑的IP地址

标签 c++ visual-c++

我正在收集 newtork 信息。从 msdn 我得到了几个 api 并且运行成功。我想收集网络连接电脑的所有 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地址:

最佳答案

您可以使用此代码检索 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 .

关于c++ - 如何在vc++中获取网络连接电脑的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22727501/

相关文章:

c++ - 如何在 Qt 中的框架上绘图?

c++ - DEFINE 宏是否适用于所有平台?

c++ - 是否定义了通过 std::wostream 输出 char* 字符串?

visual-c++ - 为什么我的 Visual C++ .exe 项目构建会创建 .lib 和 .exp 文件?

c++ - waveOut 合成器性能不佳

c++ - 模板类静态成员的初始化

c++ - 替换静态常量字符数组的值

c++ - 在系统驱动器 (C :\)) 中创建文件时,fopen 无形地失败

c++ - 为 STL 容器重载 operator<<()

c++ - 如何修改 vtkPolydata 中单元格中的点?