MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码
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自己主动获取网络地址函数实现----广播地址,网关,子网掩码的更多相关文章
- 浅谈MFC类CrackMe中消息处理函数查找方法
最近一个学姐发给我了一份CrackMe希望我解一下,其中涉及到了MFC的消息函数查找的问题,就顺便以此为例谈一下自己使用的消息函数查找的方法.本人萌新,如果有任何错漏与解释不清的地方,欢迎各路大佬指正 ...
- <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数
说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...
- func_get_args 获取一个函数的所有参数
func_get_args 获取一个函数的所有参数 { $numargs = func_num_args(); //参数数量 echo "参数个数是: $numargs&l ...
- 『实践』Yalmip获取对偶函数乘子
『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...
- Javascript class获取回调函数数据
/********************************************************************** * Javascript class获取回调函数数据 * ...
- vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法
Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...
- [转]用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口
原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题
- 探寻main函数的“标准”写法,以及获取main函数的参数、返回值
main函数表示法 很多同学在初学C或者C++时,都见过各种各样的main函数表示法: main(){/*...*/} void main(){/*...*/} int main(){/ ...
- vue--子组件主动获取父组件的数据和方法
子组件主动获取父组件的数据和方法 简单示例: this.$parent.数组 this.$parent.方法 示例: <template> <div id="Header& ...
随机推荐
- jquery /css3 全屏的渐变背景
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Web应用启动时,后台自动启动一个线程
(1)前言 前几天,manager问道一个问题:能不能实现类似于cron的后台管理方式.问题解决后,想对这几个问题进行一下简单的总结.以便抛砖引玉!首先简单的提及一下cron. Cron,计划任务,是 ...
- Spring Boot 打包分离依赖 JAR 和配置文件
<properties> <java.version>1.8</java.version> <project.build.sourceEncoding> ...
- mitmproxy 数据抓包
1.安装环境: 基于python windows操作系统需要安装Microsoft Visual C++ V14.0以上 linux操作系统则直接基于python安装即可 2.安装mitmproxy ...
- 【原】jq简易教程
https://www.jianshu.com/p/3522fe70de19 https://www.jianshu.com/p/6de3cfdbdb0e 1. jq简介 jq可以对json数据进行分 ...
- ArrayList中removeAll和clear的区别(无区别)
removeAll会直接调用此方法,传入list和false,因中间的逻辑都不会走(如果由retainAll方法调用,则会走这些逻辑判断),所以只需要看finaly中的最后一个if条件,w=0,通过循 ...
- 大项目之网上书城(七)——书页面以及加入购物车Servlet
目录 大项目之网上书城(七)--书页面以及加入购物车Servlet 主要改动 1.shu.jsp 代码 效果图 2.shu.js 代码 3.index.jsp 代码 效果图 4.FindBookByC ...
- 笔试算法题(52):简介 - KMP算法(D.E. Knuth, J.H. Morris, V.R. Pratt Algorithm)
议题:KMP算法(D.E. Knuth, J.H. Morris, V.R. Pratt Algorithm) 分析: KMP算法用于在一个主串中找出特定的字符或者模式串.现在假设主串为长度n的数组T ...
- vuex相关(actions和mutation的异曲同工)
vuex说明: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 包含的内容: state: ...
- 配置jdk环境变量和配置的作用
对于JDK要配置三个环境变量,分别是JAVA_HOME.path.classpath 对于我本人电脑来说,配置如下: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_ ...