InternetGetConnectedState 用法

90 篇文章 2 订阅
UINT CRRDlg::CheckNet()
{
DWORD dwFlag;
if(!InternetGetConnectedState(&dwFlag, 0))
{
//MessageBox("网络未连接。");
SetDlgItemText(IDC_STATIC_NETTYPE,"未连接到网络");
return 0;
}
else if(dwFlag & INTERNET_CONNECTION_MODEM)
{
SetDlgItemText(IDC_STATIC_NETTYPE,"上网类型:采用RAS拨号连接上网");
return 1;
}
else  if(dwFlag & INTERNET_CONNECTION_LAN)
{
SetDlgItemText(IDC_STATIC_NETTYPE,"上网类型:采用网卡通过局域网上网");
return 2;
}
else if(dwFlag & INTERNET_CONNECTION_PROXY)
{
SetDlgItemText(IDC_STATIC_NETTYPE,"上网类型:使用代理服务器上网");
return 3;
}
 
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用的DLL: .版本 2 .DLL命令 本地系统的连接状态, , "Wininet.dll", "InternetGetConnectedState" .参数 lpdwFlags, 整数型, 传址, 返回值 .参数 dwReserved, 整数型, , \\保留的参数 .DLL命令 打开Internet_, 整数型, "Wininet.dll", "InternetOpenA", , 返回Internet句柄 .参数 代理商名称, 文本型 .参数 存取类型, 整数型 .参数 代理名称, 整数型 .参数 代理地址, 整数型 .参数 标志, 整数型 .DLL命令 打开Internet地址_, 整数型, "Wininet.dll", "InternetOpenUrlA" .参数 Internet句柄, 整数型, , \\ InternetOpenA命令获取的Internet句柄 .参数 Url地址, 文本型, , \\指定要开始读取的URL。仅支持以ftp:,http:或https:开头的网址 .参数 头文本, 文本型 .参数 头文本长度, 整数型 .参数 标志, 整数型 .参数 定义值, 整数型 .DLL命令 HTTP查询信息, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 Internet请求句柄, 整数型 .参数 待查信息, 整数型 .参数 返回容器, 整数型, 传址 .参数 返回容器长度, 整数型, 传址 .参数 lpdwIndex, 整数型, 传址 .DLL命令 HTTP查询信息__, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 Internet请求句柄, 整数型 .参数 待查信息, 整数型 .参数 返回容器, 文本型, 传址 .参数 返回容器长度, 整数型, 传址 .参数 lpdwIndex, 整数型, 传址 .DLL命令 关闭Internet句柄, , "Wininet.dll", "InternetCloseHandle" .参数 handle, 整数型 .DLL命令 HTTP查询信息_, 整数型, "Wininet.dll", "HttpQueryInfoA" .参数 lpdwIndex, 整数型, 传址 .DLL命令 读Internet文件_, 整数型, "Wininet.dll", "InternetReadFile" .参数 Internet地址句柄, 整数型 .参数 数据缓冲区, 字节集 .参数 读取大小, 整数型 .参数 读取首地址, 整数型, 传址 .DLL命令 呼叫窗口函数地址_, 整数型, , "CallWindowProcA", , 消息信息传送给指定的窗口过程的函数。使用函数CallWindowsProc可进行窗口子分类。通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口,在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。 .参数 子程序指针, 子程序指针, , 指向接收消息的窗口过程的句柄。 .参数 参数1, 整数型, , 指定消息类型。 .参数 参数2, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。 .参数 参数3, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。 .参数 参数4, 整数型, , 指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。
在Linux中,可以使用socket编程来检测网络连接状态。具体来说,可以使用以下步骤: 1. 创建一个socket对象,使用AF_INET和SOCK_DGRAM参数来创建UDP socket。 2. 绑定socket到一个本地地址和端口。 3. 使用connect()函数将socket连接到一个远程地址和端口。可以使用google.com的IP地址和80端口来测试连接。 4. 调用select()函数来等待连接的结果。如果连接成功,select()函数将返回1,否则将返回0或-1。 下面是一个简单的示例代码,可以检测网络连接状态: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <sys/select.h> #include <errno.h> int check_network_connection() { int sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd < 0){ perror("socket"); return -1; } struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(80); addr.sin_addr.s_addr = inet_addr("74.125.24.106"); //google.com if(connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0){ if(errno != EINPROGRESS){ perror("connect"); close(sockfd); return -1; } } fd_set rset, wset; FD_ZERO(&rset); FD_SET(sockfd, &rset); wset = rset; struct timeval tv; tv.tv_sec = 5; //设置超时时间为5秒 tv.tv_usec = 0; int ret = select(sockfd + 1, &rset, &wset, NULL, &tv); if(ret < 0){ perror("select"); close(sockfd); return -1; } else if(ret == 0){ printf("timeout\n"); close(sockfd); return 0; } else{ if(FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)){ printf("network connected\n"); close(sockfd); return 1; } else{ printf("select error\n"); close(sockfd); return -1; } } } int main() { int ret = check_network_connection(); if(ret == 1){ printf("network connected\n"); } else{ printf("network disconnected\n"); } return 0; } ``` 这个示例代码中,check_network_connection()函数返回1表示网络连接正常,返回0表示网络连接不正常,返回-1表示发生错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值