void CSetSignalBoxDlg::OnBnClickedButtonGetbroadcastaddr()

{       //凝视部分为还有一种获取IP方式,可略过

//char Name[255];//定义用于存放获得的主机名的变量 

//char *IP;//定义IP地址变量 

//CString strIP="";

//PHOSTENT hostinfo;

//if(gethostname (Name, sizeof(Name)) == 0)

//{ 

// //假设成功地将本地主机名存放入由name參数指定的缓冲区中 

// if((hostinfo = gethostbyname(Name)) != NULL) 

// { 

// //这是获取主机名。假设获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo 

// //为PHOSTENT型的变量,以下即将用到这个结构体 

// IP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);

// strIP.Format(IP);

// }

//}





       CString strIP;

CString strMask;

CString strBroadcast;

CString strGateway;

in_addr broadcast;



PIP_ADAPTER_INFO pAdapterInfo;     //IP_ADAPTER_INFO结构体存储网卡信息,包含网卡名、网卡描写叙述、网卡MAC地址、网卡IP等

PIP_ADAPTER_INFO pAdapter = NULL; 

DWORD dwRetVal = 0; 

pAdapterInfo = ( IP_ADAPTER_INFO *) malloc( sizeof( IP_ADAPTER_INFO ) );

ULONG ulOutBufLen;               

//得到结构体大小,用于GetAdaptersInfo參数

ulOutBufLen = sizeof(IP_ADAPTER_INFO); 

// 第一次调用GetAdapterInfo获取ulOutBufLen大小 

//调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;当中ulOutBufLen參数既是一个输入量也是一个输出量

if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) 



free(pAdapterInfo);

pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen); 



if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)



pAdapter = pAdapterInfo; 

while (pAdapter)    //有多个网卡



strIP.Format(_T("%s"), pAdapter->IpAddressList.IpAddress.String);

strMask.Format(_T("%s"),pAdapter->IpAddressList.IpMask.String);

strGateway.Format(_T("%s"),pAdapter->GatewayList.IpAddress.String);

pAdapter = pAdapter->Next; 







broadcast.S_un.S_addr =(inet_addr(strIP) & inet_addr(strMask))| (~inet_addr(strMask));

strBroadcast = inet_ntoa(broadcast);




SetDlgItemText(IDC_EDIT_ServerIP,strBroadcast);

SetDlgItemText(IDC_EDIT_SubnetMask,strMask);

SetDlgItemText(IDC_EDIT_Gateway,strGateway);

if (pAdapterInfo)

{

free(pAdapterInfo);

}



}

MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码的更多相关文章

  1. 浅谈MFC类CrackMe中消息处理函数查找方法

    最近一个学姐发给我了一份CrackMe希望我解一下,其中涉及到了MFC的消息函数查找的问题,就顺便以此为例谈一下自己使用的消息函数查找的方法.本人萌新,如果有任何错漏与解释不清的地方,欢迎各路大佬指正 ...

  2. <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数

    说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...

  3. func_get_args  获取一个函数的所有参数

    func_get_args  获取一个函数的所有参数 {     $numargs = func_num_args(); //参数数量     echo "参数个数是: $numargs&l ...

  4. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  5. Javascript class获取回调函数数据

    /********************************************************************** * Javascript class获取回调函数数据 * ...

  6. vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法

    Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...

  7. [转]用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口

    原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题

  8. 探寻main函数的“标准”写法,以及获取main函数的参数、返回值

    main函数表示法        很多同学在初学C或者C++时,都见过各种各样的main函数表示法: main(){/*...*/} void main(){/*...*/} int main(){/ ...

  9. vue--子组件主动获取父组件的数据和方法

    子组件主动获取父组件的数据和方法 简单示例: this.$parent.数组 this.$parent.方法 示例: <template> <div id="Header& ...

随机推荐

  1. Java8新特性 Stream流式思想(一)

    遍历及过滤集合中的元素使用传统方式遍历及过滤集合中的元素package cn.com.zq.demo01.Stream.test01.Stream; import java.util.ArrayLis ...

  2. arp - Linux的ARP核心模块

    描述 这个核心协议模块实现RFC826中定义的 Address Resolution Protocol [译注:即TCP/IP的第三层到第一层的地址转换协议],用于在直接相连的网络中换第二层硬件地址和 ...

  3. proposal_layer.py层解读

    proposal_layer层是利用训练好的rpn网络来生成region proposal供fast rcnn使用. proposal_layer整个处理过程:1.生成所有的anchor,对ancho ...

  4. git 提交运用vim编辑器

    git  commit -m 默认使用nano,觉得不爽,改成vim吧.在 .gitconfig (在根目录下)的  [core] 段中加上 editor=vim . 或:$git config -- ...

  5. vue 常用功能和命令

    1. vue-cli 构建项目 # 全局安装 vue-cli $ npm install --global vue-clif # 创建一个基于 webpack 模板的新项目 $ vue init we ...

  6. 并发2-Synchronized

    一.Synchronized的概念 是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个 ...

  7. 六、面向切面的spring(2)

    这个是承接五的,这部分主要的内容是在XML中声明切面. 一.在XML中声明切面 让我们先看一下spring中的AOP配置元素有哪些: AOP配置元素 用途 <aop:advisor> 定义 ...

  8. ORACLE IN 与NOT IN 的性能区别

    业务问题大概可以这样描述,一个父表,一个子表,查询的结果是找到子表中没有使用父表id的记录,这种情况估计很多系统都会牵涉得到.让我们来举一个例子: 表一: 父表 parent 表二: 子表 child ...

  9. C++命名空间、标准库(std,全局命名空间)

    背景 别人遇到的问题: C++ 全局变量不明确与 using namespace std 冲突 我遇到的问题与他相似,函数调用冲突 using namespace std; class compare ...

  10. mybatis保存时将数据库自动生成的主键返回

    场景 保存订单数据和订单详情数据时需要将订单的主键作为关联子段添加到明细表中,需要将保存订单时的主键返回给供保存明细表时使用 添加xml中新增数据时的配置 <insert id="in ...