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);

}

}

时间: 2024-10-08 08:25:08

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

默认网关 网关 子网掩码 广播地址

目录 默认网关 网络地址,主机地址 网关 子网掩码 广播地址 特殊的ip地址 参考: 默认网关 一个用于 TCP/IP 协议的配置项,是一个可直接到达的 IP 路由器的 IP 地址.配置默认网关可以在 IP 路由表中创建一个默认路径. 一台主机可以有多个网关.默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包.现在主机使用的网关,一般指的是默认网关. 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电

使用WSAIoctl获取AcceptEx函数指针 [转]

Winsock2的其他供应商不一定会实现AcceptEx函数.同样情况也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Microsoft将在以后版本的windows里. 在运行WinNT和Win2000的系统上,这些APIs在Microsoft提供的DLL(mswsock.dll)里实现,可以通过链接 mswsock.lib或者通过WSAioctl的SIO_GET_EXTENSION_FUNCTION_POINTER操作动态

java 获取网络地址图片

收藏一个获取网络图片的方法. 1 //获取网络图片 2 public void ImageRequest(String ImageName,String GifUrl) throws Exception { 3 //new一个URL对象 4 URL url = new URL(GifUrl); 5 //打开链接 6 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 7 //设置请求方式为"GET" 8 c

linux获取时间函数及计算时间差

参考:   http://www.cnblogs.com/krythur/archive/2013/02/25/2932647.html 第一章  获取时间函数 1. char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n&quo

Yii2.0源码分析之——设置别名函数(setAlias)和获取别名函数(getAlias)

首先说说什么是别名.在Yii中有很多的路径,在开发的过程当前我们也会使用一些路径.一般来说都需要使用绝对路径,但绝对路径都很长.所以,为了方便的使用路径,可以在Yi中i给每个路径起个名称,这个名称就是别名.别名的格式: 别名必须以"@"字符开头,别名中还可以包含"/".如("@www"为根别名,"@www/test"就为子别名) 别名最后的目录分隔符("\"或者"/")都将去掉(如果有的

Oracle数据库获取uuid函数

Oracle新建系统表时,要求主键为32位uuid,猜测Oracle肯定会提供相关的函数. 翻阅相关文档,果然发现Oracle提供的函数 sys_guid() 用于获取32位uuid,简单使用为 select sys_guid() from dual; 该函数返回32位的uuid为大写,可以使用 lower(sys_guid()) 转为小写. Oracle数据库获取uuid函数

MFC程序中消息以及函数的处理顺序简介[转]

MFC应用程序中处理消息的顺序 1.AfxWndProc()      该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc()  该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,                    然后调用WindowProc()函数 3.WindowProc()      该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.

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

原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题 原文地址:https://www.cnblogs.com/rainbow70626/p/8973440.html

vue中父子组件主动获取值 父组件向子件间的传值

父组件主动获取子组件的数据和方法: 1.调用子组件的时候定义一个ref <v-header ref='header'></header> 2.在父组件里面通过 this.$refs.header.属性 this.$refs.header.方法 子组件主动获取父组件的数据和方法 this.$parent.数据 this.$parent.方法 父组件向子件间的传值 1.父组件调用子组件的时候 绑定动态属性 2.在子组件里通过props接受父组件传过来的数据 原文地址:https://w