最近由于需要做一个穿透网吧管理软件对交换机和路由器限制功能。 我给本机设置了 10 个IP地址,用于接收硬件传来的数据。
我需要得到本机所有的 IP 地址.  
现在整理一下,已备后用。

bool GetLocalALL_IPAddress(  CStringArray & strArrayIP )
{
    CHAR szHostName[100];
    struct addrinfo *res ;
    struct addrinfo *next = NULL ;
    WORD version;
    WSADATA data;
    version = MAKEWORD(0x02, 0x02);
    ::WSAStartup( version , &data );

    if ( SOCKET_ERROR == ::gethostname( szHostName, sizeof( szHostName ) ) )
    {
        ::WSACleanup();
return false ;
    }
   //  getaddrinfo 这个API 在window 2000 的 ws2_32.dll 中找不到入口点,没有导出这个函数
if ( 0 != getaddrinfo( szHostName, NULL , NULL , &res ) )
    {
        ::WSACleanup();
return false ;
    }

    /**//*
    考虑到兼容多个协议的数据结构, MS 没有把下面的结构体 直接写成  struct sockaddr_in .
    struct sockaddr
    {
    u_short    sa_family;
    char       sa_data[14];
    };  
    struct sockaddr_in
    {
    short   sin_family;
    u_short sin_port;
    struct  in_addr sin_addr;
    char    sin_zero[8];
    };
    */
next = res ;
do
    { 
        strArrayIP.Add( inet_ntoa( ( (sockaddr_in *)(next->ai_addr) )->sin_addr ) );
next = next->ai_next ;
}while ( next != NULL ) ;
::WSACleanup();
return true ;
}

bool help::Network::GetALL_IPAddress2(  CStringArray & strArrayIP )
{
 bool bRet ;

CHAR szHostName[100];
 struct addrinfo *res ;
 struct addrinfo *next = NULL ;

WORD version;
 WSADATA data;

version = MAKEWORD(0x02, 0x02);

::WSAStartup( version , &data );

if ( SOCKET_ERROR == ::gethostname( szHostName, sizeof( szHostName ) ) )
 {
  ::WSACleanup();
  return false ;
 }

struct hostent * pHostent = gethostbyname( szHostName );
 
 if ( pHostent == NULL )
 {
  ::WSACleanup();

return false;
 }

int i=0;

while ( pHostent->h_addr_list[i] != NULL )
 {
  in_addr in;

in.S_un.S_addr = *(DWORD* )(pHostent->h_addr_list[i] );

strArrayIP.Add( inet_ntoa(in) );

i++ ;
 }

::WSACleanup();

return true ;
}

得到本机所有 IP 地址相关推荐

  1. python在windows和linux_python在windows和linux下获得本机本地ip地址方法小结

    本文实例总结了python在windows和linux下获得本机本地ip地址方法.分享给大家供大家参考.具体分析如下: python的socket包含了丰富的函数和方法可以获得本机的ip地址信息,so ...

  2. python项目实战:获取本机所有IP地址的方法

    2019独角兽企业重金招聘Python工程师标准>>> 前言 今天为大家介绍一个利用python获取本机所有IP地址的具体代码,具有一定的参考价值,希望能够帮助到大家,代码如下: 导 ...

  3. 【Win 10 应用开发】获取本机的IP地址

    按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...

  4. C++获取本机的ip地址程序

    C++获取本机的ip地址程序 #include <WinSock2.h> #pragma comment(lib,"ws2_32") //链接到ws2_32动态链接库c ...

  5. 使用Linux curl命令获取本机公网IP地址

    使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...

  6. VB6获取本机所有IP地址公用函数

    因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option ExplicitPrivate Declare Function WSAstartup Lib "WSOCK32.D ...

  7. Spring boot 获取本机的IP地址mac地址以及电脑名称!

    Spring boot 获取本机的IP地址mac地址以及电脑名称! package com.example.demo;import java.net.InetAddress;import java.n ...

  8. Windows 7下查看本机的ip地址

    Windows 7下查看本机的ip地址 有两个方法 方法一: 找到桌面上的"网络"-->鼠标右键单击-->选择"属性",进入网络和共享中心--> ...

  9. QT 怎么获取linux本机的IP地址?

    一.QHostAddress 转 QString QHostAddress haAdrdress = QHostAddress::LocalHost;//LocalHost相当于本地的"12 ...

  10. mac 查看本机的IP地址

    mac 查看本机的IP地址 ifconfig | grep "inet " | grep -v 127.0.0.1

最新文章

  1. C 中的内存操作函数-memcpy 等(to be continued)
  2. python怎么新开一行_极简主义的践行者:一行python可以怎么玩?
  3. wxWidgets:wxWindowUpdateLocker类用法
  4. 重学前端-js的类型问题
  5. Python之路【第一篇】:环境搭建
  6. 指针与零的比较以及浮点型与零的比较
  7. 不学Python的同学,“跳一跳”都输了
  8. TFS 2010 使用手册(一)安装与配置
  9. Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口
  10. Matlab 2015b安装教程
  11. MarkDown编辑器实用语法、数学公式汇总
  12. IOS学习 IOS8的虚化效果
  13. python获取上周一的日期
  14. 估值470亿美元的WeWork,到底是什么?
  15. 曾国藩:统领30万湘军,只靠这4句话
  16. CESIUM例子学习(十一)——3DTiles Clipping Planes(1)
  17. iOS 自动布局 Autolayout 报错:Unable to simultaneously satisfy constraints.
  18. python 自动化数据提取之正则表达式
  19. 掌握Revit中的标高的绘制和修改学习记录
  20. Apache Doris 向量化版本在小米A/B实验场景的调优实践

热门文章

  1. 微服务之间单点登录和用户权限认证的实现
  2. 【Nvidia AGX Xavier】AGX Xavier使用记录
  3. 解析移动互联网四大App云加固平台市场和质量对比
  4. Educoder/头歌JAVA实训——JAVA面向对象:类与对象
  5. 黑客历程碑事件编年史
  6. 云服务器免费suse系统,suse系统
  7. [战略]对空间_日志风格_日志分类_日志标记_的整体说明
  8. 伸展树算法c语言,数据结构之伸展树详解
  9. poi读取Excel文档(.xls .xlsx)包含合并单元格
  10. Activity在全屏属性情况下,WebView会出现输入法软键盘遮挡输入框(界面无法自动上调)问题