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. AttributeError: 'list' object has no attribute 'extends' && list详解

    拼写错误 是extend  而不是extends 出错demo: In [27]: c = [2,3] In [28]: c.extends([5]) ------------------------ ...

  2. jekyll 将纯文本转化为静态网站和博客 静态网站生成器

    jekyll 将纯文本转化为静态网站和博客 静态网站生成器 这个貌似对windows 支持不是很好~ 但是有支持,官方说不建议使用

  3. 面包屑 asp代码记录 newsmulu_class 内部函数

    'id 这里其实是 classId 'mbStr1 最右边的栏目模板 由于是当前本页面 就不带链接了 建议默认值:<span class='mbxC'>$title</span> ...

  4. vue -vantUI tab切换时 list组件不触发load事件解决办法

    最近由于公司项目需要,用vue写了几个简单的页面.用到了vantUI List 列表 瀑布流滚动加载,用于控制长列表的展示 当列表即将滚动到底部时,会触发事件并加载更多列表项. (页面加载完成后默认会 ...

  5. PC端样式重置

    html{font-family:"Microsoft YaHei UI","Microsoft YaHei",sans-serif;-ms-text-size ...

  6. POJ 1664 放苹果( 递推关系 )

    链接:传送门 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n 和 m 的关系可以进一步分析: 特殊的 n = 1 || ...

  7. LINUX:Contos7.0 / 7.2 LAMP+R 下载安装Mysql篇

    文章来源:http://www.cnblogs.com/hello-tl/p/7569097.html 更新时间:2017-09-21 16:06 简介 LAMP+R指Linux+Apache+Mys ...

  8. PyQt5+requests实现车票查询工具

    PyQt5+requests实现一个车票查询工具,供大家参考,具体内容如下 结构图   效果图   思路 1.search(QPushButton)点击信号(clicked)连接到自定义的槽函数(ev ...

  9. spark streaming基于Kafka的开发

    spark streaming使用Kafka数据源进行数据处理,本文侧重讲述实践使用. 一.基于receiver的方式 在使用receiver的时候,如果receiver和partition分配不当, ...

  10. 树剖 lca

    GeneralLiu  橙边为轻边 红边为重边 绿数为每个点的 top 橙数为每个点的编号 步骤 1 先预处理 每个点的 deep深度  size子树大小  dad父节点 2 再预处理 每个点的 to ...