win10 笔记本在连接有线和wifi的情况下,如何设置一个应用使用wifi网络,其他应用使用有线网络?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win10 笔记本在连接有线和wifi的情况下,如何设置一个应用使用wifi网络,其他应用使用有线网络?相关的知识,希望对你有一定的参考价值。

因为有线网络不稳定,打游戏用热点比较稳点,然后想其他应用使用有线网络,比如浏览器看视频就使用有线网络,游戏使用热点网络

建议你搞个软路由系统,可以针对不同的协议做分流,你的有线设为WAN1 无线热点用USB卡槽作为WAN2,针对游戏分流WAN2 其他分流WAN1 参考技术A 应该是不可以,一般不是有线稳定嘛,你这为什麽会反过来了QAQ

Qt 在Windows下设置Wifi连接和有线连接

Wifi连接-自动获取IP

实现程序如下:

// 设置网络为DHCP
QProcess cmd;
cmd.start(QString("netsh interface ip set address "%1" dhcp").arg("WLAN"));
cmd.waitForStarted();
cmd.waitForFinished();
QString strCmdOut = QString::fromLocal8Bit(cmd.readAllStandardOutput());
// 有时候执行命令后等待时间太短,已连接wifi还没来得及可以正常使用,则会返回"
"
// 但实际已经成功启用DHCP。(必须先连接wifi,才能正常启用DHCP)
if (strCmdOut.contains("已在此接口上启用 DHCP。") || strCmdOut == "
")
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("自动获取IP成功", SuccessIcon);
    pPromptBox->exec();
}
else
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("自动获取IP失败", FailIcon);
    pPromptBox->exec();
}

Wifi连接-手动获取IP

实现程序如下:

// 1. 设置为静态IP
QString strCommand("netsh interface ip set address");

// 2. 执行CMD命令
strCommand += QString(""%1" ").arg("WLAN");
strCommand += QString("static %1 ").arg(m_pEditIP->text());
strCommand += QString("%1 ").arg(m_pEditMask->text());
strCommand += QString("%1").arg(m_pEditGway->text());
QProcess cmd;
cmd.start(strCommand);
cmd.waitForStarted();
cmd.waitForFinished();
// cmd.readAllStandardError()这些信息只能输出一次,所以要赋值给临时QString
// 有线连接和wifi网卡的IP不能设置为一样的,否则会提示:"对象已存在"
QString strCmdOut = QString::fromLocal8Bit(cmd.readAllStandardOutput());
QString strError = QString::fromLocal8Bit(cmd.readAllStandardError());
qDebug() << "设置为静态IP_strCmdOut: " << strCmdOut;
qDebug() << "设置为静态IP_error: " << strError;
// 判断cmd是否执行成功
if (strCmdOut.contains("address"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效IP参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut.contains("mask"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效mask参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut.contains("gateway"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效gateway参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut == "
" && strError == "")
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("手动设置成功", SuccessIcon);
    pPromptBox->exec();

    this->accept();
    emit NetConfigSuc(); // 发射网络配置成功的信号
}
else if (strCmdOut.contains("对象已存在。"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("网络配置未改动", SuccessIcon);
    pPromptBox->exec();

    this->accept();
    emit NetConfigSuc(); // 发射网络配置成功的信号
}
else
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("手动设置失败", FailIcon);
    pPromptBox->exec();
}

有线连接-自动获取IP

实现程序如下:

// 设置网络为DHCP
QProcess cmd;
cmd.start(QString("netsh interface ip set address "%1" dhcp").arg("以太网"));
cmd.waitForStarted();
cmd.waitForFinished();
QString strCmdOut = QString::fromLocal8Bit(cmd.readAllStandardOutput());
// 有时候执行命令后等待时间太短,已连接wifi还没来得及可以正常使用,则会返回"
"
// 但实际已经成功启用DHCP。(必须先连接wifi,才能正常启用DHCP)
if (strCmdOut.contains("已在此接口上启用 DHCP。") || strCmdOut == "
")
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("自动获取IP成功", SuccessIcon);
    pPromptBox->exec();
}
else
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("自动获取IP失败", FailIcon);
    pPromptBox->exec();
}

有线连接-手动获取IP

实现程序如下:

// 1. 设置为静态IP
QString strCommand("netsh interface ip set address");

// 2. 执行CMD命令
strCommand += QString(""%1" ").arg("以太网");
strCommand += QString("static %1 ").arg(m_pEditIP->text());
strCommand += QString("%1 ").arg(m_pEditMask->text());
strCommand += QString("%1").arg(m_pEditGway->text());
QProcess cmd;
cmd.start(strCommand);
cmd.waitForStarted();
cmd.waitForFinished();
// cmd.readAllStandardError()这些信息只能输出一次,所以要赋值给临时QString
// 有线连接和wifi网卡的IP不能设置为一样的,否则会提示:"对象已存在"
QString strCmdOut = QString::fromLocal8Bit(cmd.readAllStandardOutput());
QString strError = QString::fromLocal8Bit(cmd.readAllStandardError());
qDebug() << "设置为静态IP_strCmdOut: " << strCmdOut;
qDebug() << "设置为静态IP_error: " << strError;
// 判断cmd是否执行成功
if (strCmdOut.contains("address"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效IP参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut.contains("mask"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效mask参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut.contains("gateway"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("无效gateway参数", PromptIcon);
    pPromptBox->exec();
}
else if (strCmdOut == "
" && strError == "")
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("手动设置成功", SuccessIcon);
    pPromptBox->exec();

    this->accept();
    emit NetConfigSuc(); // 发射网络配置成功的信号
}
else if (strCmdOut.contains("对象已存在。"))
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("网络配置未改动", SuccessIcon);
    pPromptBox->exec();

    this->accept();
    emit NetConfigSuc(); // 发射网络配置成功的信号
}
else
{
    MyPromptBox *pPromptBox = new MyPromptBox;
    pPromptBox->setLabInfo("手动设置失败", FailIcon);
    pPromptBox->exec();
}

完整工程的GitHub链接

https://github.com/confidentFeng/VSAppProject/tree/NetControl


以上是关于win10 笔记本在连接有线和wifi的情况下,如何设置一个应用使用wifi网络,其他应用使用有线网络?的主要内容,如果未能解决你的问题,请参考以下文章

台式win7有线网络连接已启用但不可用该怎么办?

w10开wifi为啥无法承载网络

笔记本win10网络无法连接怎么办?

Win7笔记本电脑的WIFI网络如何共享给Ubuntu Linux服务器了,谢谢大家,急啊

win7升级win10显示连接服务器异常是啥情况

win10内网外网智能访问