我们已知的网络连接有3种:拨号、使用局域网以及代理上网。

无论哪一种上网方式都可以判断网络是否畅通,借此,我们来做一个判断网络是否畅通(存在)的程序,新建一个基类为QWidget的工程,不要UI。

添加新文件:C++Class → Class Name :isonl、Base Name :QWidget

头函数 >> isonl.h。

 #ifndef ISONL_H
#define ISONL_H
//拨号
#define INTERNET_CONNECTION_MODEM 1
//局域网
#define INTERNET_CONNECTION_LAN 2
//代理上网
#define INTERNET_CONNECTION_PROXY 4
//代理被占用
#define INTERNET_CONNECTION_MODEM_BUSY 8 #include <QWidget> class isOnl : public QWidget
{
Q_OBJECT
public:
explicit isOnl(QWidget *parent = );
int a; //用来做一个标识
private slots:
void GetInternetConnectState(); //获取Internet连接状态
signals:
void returnisonline(int); //发射信号
public slots:
}; #endif // ISONL_H

源代码 >> isonl.cpp

#include "isonl.h"
#include <QLibrary>
#include <QTimer>
//定义函数指针
typedef bool (*ConnectFun)(int* lpdwFlags,int dwReserved);
isOnl::isOnl(QWidget *parent) : QWidget(parent)
{
a = -;
QTimer *timer=new QTimer(this); //新建一个定时器对象
connect(timer,SIGNAL(timeout()),this,SLOT(GetInternetConnectState()));
timer->start(); //时间间隔1秒。每1秒获取一次,
GetInternetConnectState();
}
//获得联网方式
void isOnl::GetInternetConnectState()
{
QLibrary lib("Wininet.dll");
//如果正确加载了dll
if(lib.load())
{
bool bOnline=false;//是否在线
int flags;
//获取dll库中的函数InternetGetConnectedState函数地址`
ConnectFun myConnectFun=(ConnectFun)lib.resolve("InternetGetConnectedState");
//判断是否连网
bOnline=myConnectFun(&flags,);
if(bOnline)
{
//在线:拨号上网
if ( flags & INTERNET_CONNECTION_MODEM ) //在线:拨号上网
{
a=; } else if(flags & INTERNET_CONNECTION_LAN) //在线:通过局域网
{
a=;
}
else if(flags & INTERNET_CONNECTION_PROXY) //在线:代理
{
a=;
}
}
else
{
a = -;
}
emit returnisonline(a);//信号发射出去
}
}

在工程文件(widget.pro)中添加

QT += core gui network

此时,我们的网络判断已经做好,接下来是如何去运用。

在头函数widget.h中

 #include "isonl.h"

 //定义私有变量
private:
isOnl *online; //添加一个私有槽信号用来实现
private slots:
void showOnline(int); //添加一个信号槽函数,与之相对
signals:
void returnisonline(int);
//这个函数好像是不能被省略,我的系统是Win10测试的时候如何没有此函数,会导致出错。

在源代码widget.cpp中

 //在构造函数中添加
online = new isOnl;
connect(online,SIGNAL(returnisonline(int)),this,SLOT(showOnline(int))); //获取网络是否畅通
void Widget::showOnline(int a)
{
if(a == || a == || a == )
{
//当网络畅通时执行这里面的内容
//label2 ->setStyleSheet("background-color:lightgreen;");//浅绿
}
else if(a == -)
{
//当网络中断时执行这里面的内容
//label2 ->setStyleSheet("background-color:red;");
} }

以上就是Qt判断网络是否存在的内容,此内容还可以运用到:判断网络连接方式,有兴趣的可以尝试一下。

有问题请留言,或者联系QQ:1285015525 也可以发邮箱1285015525@qq.com

Qt判断网络是否在的更多相关文章

  1. iOS 判断网络连接状态的几种方法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #801b80 } p.p2 ...

  2. android——判断网络状态

    平常我们玩qq的时候我们没联网 ,qq上面回显示"网络连接不给力,请检查网络连接"那么它是 通过什么方式判断网络是否连接的呢? 下面将写个案例展示如何检查网络连接状态的 由于我们这 ...

  3. Win8 app判断网络连接状态

    Win8 app判断网络连接状态 NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged; ...

  4. Reachability(判断网络是否连接)

    类似于一个网络状况的探针. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabili ...

  5. android中判断网络连接是否可用

    一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (C ...

  6. 判断网络是否连接 和 判断GPS是否连接

    //判断网络是否连接 public static Boolean isNetworkEnabled(Context context){ int status=-1  //设置默认连接的状态为-1 Co ...

  7. Android判断网络是否连接

    <!-- 配置文件判断网络是否连接 --> <uses-permission android:name="android.permission.ACCESS_NETWORK ...

  8. android判断网络连接状态、联网类型、运营商

    /** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { St ...

  9. Android判断网络状态

    package com.ch.services; import com.ch.utils.NetWorkUtils; import android.app.Service; import androi ...

随机推荐

  1. 在eclipse中使用git的pull功能时报错解决办法

    打开项目的 .git/config文件,参照以下进行编辑 [core] symlinks = false repositoryformatversion = 0 filemode = false lo ...

  2. Hbuild开发App入门

    http://ask.dcloud.net.cn/article/89建议必看网站 http://www.html5plus.org/doc/h5p.html  API下载地址

  3. (转)flask的context机制

    本文转自:https://blog.tonyseek.com/post/the-context-mechanism-of-flask/ 作者:无知的 TonySeek 注意:本文仅仅作为个人mark, ...

  4. Hadoop基础-MapReduce的数据倾斜解决方案

    Hadoop基础-MapReduce的数据倾斜解决方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据倾斜简介 1>.什么是数据倾斜 答:大量数据涌入到某一节点,导致 ...

  5. Linux shell 日期,时间相关的命令

    在shell脚本中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法 获取当前日期:today=`date +"%Y-%m-%d"` 获取昨天的日 ...

  6. webp实践的javascript检测方案

    function hasWebp () { // 查看Cookie,如果没有则进行以下逻辑 var img = new Image(); img.onload = handleSupport; img ...

  7. shell 判断脚本参数

    测试登陆脚本 ./test.sh -p 123 -P 3306 -h 127.0.0.1 -u root #!/bin/sh ];then echo "USAGE: $0 -u user - ...

  8. redis初使用

    下载地址:https://redis.io/download Redis项目不正式支持Windows.但是,微软开放技术小组开发并维护了针对Win64的Windows端口 windows版下载地址:h ...

  9. Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型

    今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...

  10. Javascript - LayUI库的流加载

    LayUI库的流加载 用的LayUI-v2.2.45,将整个包解压缩后添加到项目,引入两个文件即可,不需要引入Jquery,此库自带: <link href="../js/layui- ...