qt检测网络连接状态【只能检测和路由器的连接,不能测试到外网的连接】

#include <QCoreApplication>
#include <QDebug>
#include <QTextStream>
#include <QDir>
#include <QFile>
#include <QList>
#include <QThread>
#include <QtNetwork/QNetworkConfigurationManager>
#include <QtNetwork/QNetworkConfiguration>
#include <QtNetwork/QNetworkInterface>
#define ETH_IF_NAME   "eth0"
#define ETH_IF_PPP0   "ppp0"
#define ETH_IF_PPP1   "ppp1"
#define ETH_IF_ETH1   "eth1"
#define ETH_IF_USB0   "usb0"
#define ETH_NAME_SERVER     "nameserver 127.0.0.1"

static bool status[2]={0};

bool CheckNetInfo()
{
    system("ifconfig eth0 up");
    system("ifconfig usb0 up");
    memset(status, 0 ,sizeof(status));

QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();

for (int i = 0; i < ifaces.count(); i++)
    {
        QNetworkInterface iface = ifaces.at(i);
        if ( iface.flags().testFlag(QNetworkInterface::IsUp)
             && iface.flags().testFlag(QNetworkInterface::IsRunning)
             && !iface.flags().testFlag(QNetworkInterface::IsLoopBack)
             && ((iface.name() == ETH_IF_PPP0) ||(iface.name() == ETH_IF_PPP1)
                 ||(iface.name() == ETH_IF_ETH1) ||(iface.name() == ETH_IF_USB0))
             ||(iface.name() == ETH_IF_NAME) ||(iface.name() == ETH_NAME_SERVER)
           )
        {
            for (int j=0; j<iface.addressEntries().count(); j++)
            {
                    qDebug() << iface.name()<< "isConnected" << endl;
                    if(iface.name() == ETH_IF_USB0)
                        status[0] = true;
                    else if(iface.name() == ETH_IF_NAME)
                        status[1] = true;
            }
        } else {
            for (int j=0; j<iface.addressEntries().count(); j++)
            {
                    qDebug() << iface.name()<< "isNotConnected" << endl;
            }
        }
    }

}

时间: 2024-12-29 07:23:36

qt检测网络连接状态【只能检测和路由器的连接,不能测试到外网的连接】的相关文章

ftp搭建后外网无法连接和访问阿里云服务器(非软件)

阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解决方法. 问题原因一:购买的阿里云ECS未开放外网访问端口. 解决方法:开放端口. 登录阿里云ECS服务器控制面板,[网络和安全]->[安全组],在右边选择[配置规则]->[添加安全组规则],协议选全部,授权对象填0.0.0.0/0 点击确定后,再试一下外网访问FTP,是不是已经可以正常访问了?

iOS 网络与多线程--1.检测网络链接状态

通过Reachability库,检测设备的网络连接状况. 使用到的类库:Reachability Reachability库,是一个iOS环境下,检测设备网络状态的库,可以在网络上搜索下载. 使用之前导入到工程内. 之后在视图控制器文件(ViewController.m)内添加以下代码 导入网络状态库  #import "Reachability.h" 1 // 用于检测网络是否存在函数 2 -(BOOL)isExistenceNetwork 3 { 4 BOOL isExistenc

内网外网同时连接方法

资料 内网ip:192.168.40.19 内网网网关:192.168.40.1 外网(无线网)ip:192.168.61.161 外网(无线网)网关:192.168.60.1 查询网关的方法: 1 设置外网网关优先 设置无线网卡为默认路由网关:无线网络连接属性-Internet协议(TCP/IP)-属性-高级,手动输入无线路由网关,我这里的是 192.168.1.1,跃点数为"1",是最高优先级.到了这一步,如果有线连接,无线连接同时存在的话,所有的数据都是经由无线网卡处理的. 2

如何允许外网可以连接mysql数据库

下面就是具体的实现方法: 1.首先检查mysql所在服务器的防火墙,如果限制了外网对3306端口的连接,那么放开限制 Linux服务器中执行  iptables -L   可以查看当前的防火墙规则 iptables -F   可以清空所有防火墙规则 2.确保mysql的监听地址是0.0.0.0 监听地址是0.0.0.0 ,表示该mysql允许所有IP地址进行连接,这是允许远程连接的基础 监听地址是127.0.0.1,则代表该mysql只允许所在服务器本机连接,外网是无法连接的 怎么知道mysql

问题解决——用心跳表示简单的连接状态 链路检测

==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于出版.印刷或学术引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4238531.html =============

3-ftp搭建成功,服务器能访问,外网无法连接和访问

登录 ECS 管理控制台,找到相应的实例. 在实例的右侧单击管理,进入实例详情页面.选择本实例安全组. 在安全组列表页面,找到相应的安全组,单击配置规则. 在安全组规则页面,单击添加安全组规则. 在添加安全组规则对话框,协议类型选择全部,授权对象填写 0.0.0.0/0. 说明: VPC网络实例不需要选择网卡类型,经典网络实例的网卡类型需要选择公网. 如果这里不能选择端口范围-1/-1.克隆系统生成的规则修改下 防火墙拦截 FTP 进程 这种情况可能是由于实例防火墙将 FTP(IIS) 进程拦截

阿里 Linux服务器外网无法连接MySQL解决方法

我的服务器买的是阿里云ECS linux系统.为了更好的操作数据库,我希望可以用navicat for mysql管理我的数据库. 当我按照正常的模式去链接mysql的时候, 报错提示: 2003- Can't connect MySQL Server on 'x.x.x.x'(10038) 于是,通过查找资料,我找到了解决的方法,其实是阿里云服务器为了安全默认不允许从外面链接Mysql数据库. 下面是解决整理的三种解决的方法: 第一种.监听地址配置错误解决方法: 检查mysql服务端口(默认为

李洪强iOS下的实际网络连接状态检测

iOS下的实际网络连接状态检测 序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法

iOS下的实际网络连接状态检测:RealReachability

序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法上网,但本地连接已经建立: 2.