在QT中为wifi连接设置静态IP
setting static IP for wifi connection in QT
我正在尝试创建一个基于 QT 的应用程序来扫描和连接 WiFi 网络。我使用 this example 作为参考代码。
- 是否可以使用 QNetworkConfiguration 或任何相关的 class 为 WiFi 连接分配静态 IP?
- 如何验证受密码保护的网络?
提前致谢......
我使用下面的代码集创建了一个网络会话..
void BearerMonitor::createNewSessionFromQml(QString ssid)
{
QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations();
while (!allConfigurations.isEmpty()) {
QNetworkConfiguration config = allConfigurations.takeFirst();
if(config.name()==ssid)
createSessionFor(config);
}
}
SessionWidget::SessionWidget(const QNetworkConfiguration &config, QObject *parent):QObject(parent)
{
session = new QNetworkSession(config, this);
session->open();
}
不,你不能。至少不只是 Qt API。
请阅读this and in particular this。 QNetworkConfiguration
只是一个管理网络配置的工具。本机代码/OS 交互需要编辑此类配置。从第二个 link:
Note that the QNetworkConfiguration object only provides limited information about the configuration details themselves. It's main purpose is to act as a configuration identifier through which link layer connections can be created, destroyed and monitored.
甚至 "start/stop network interfaces" 的说法也不完全正确,因为这种功能仅在某些 OS 中可用(不是移动设备)。有关详细信息,请参阅第二个 link 的 "Platform capabilities" 部分。
同样的推理也适用于密码问题。一旦使用相应的密码在 OS 中注册了网络(由于本机代码或用户实际注册了它),NetworkConfigurationManager
, granted that the list of configurations is updated via updateConfigurations()
就可以使用新的配置。新配置包含密码,但您无法从 Qt API 对其进行编辑。
如前所述,本机代码是唯一的解决方案。不过,Apple does not want you to mess up with WiFi programatically 因为私有 API 不能在 iOS > 5.1 中使用(Qt 支持的最旧版本与 Qt 5.4 一样)。
我正在尝试创建一个基于 QT 的应用程序来扫描和连接 WiFi 网络。我使用 this example 作为参考代码。
- 是否可以使用 QNetworkConfiguration 或任何相关的 class 为 WiFi 连接分配静态 IP?
- 如何验证受密码保护的网络?
提前致谢......
我使用下面的代码集创建了一个网络会话..
void BearerMonitor::createNewSessionFromQml(QString ssid)
{
QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations();
while (!allConfigurations.isEmpty()) {
QNetworkConfiguration config = allConfigurations.takeFirst();
if(config.name()==ssid)
createSessionFor(config);
}
}
SessionWidget::SessionWidget(const QNetworkConfiguration &config, QObject *parent):QObject(parent)
{
session = new QNetworkSession(config, this);
session->open();
}
不,你不能。至少不只是 Qt API。
请阅读this and in particular this。 QNetworkConfiguration
只是一个管理网络配置的工具。本机代码/OS 交互需要编辑此类配置。从第二个 link:
Note that the QNetworkConfiguration object only provides limited information about the configuration details themselves. It's main purpose is to act as a configuration identifier through which link layer connections can be created, destroyed and monitored.
甚至 "start/stop network interfaces" 的说法也不完全正确,因为这种功能仅在某些 OS 中可用(不是移动设备)。有关详细信息,请参阅第二个 link 的 "Platform capabilities" 部分。
同样的推理也适用于密码问题。一旦使用相应的密码在 OS 中注册了网络(由于本机代码或用户实际注册了它),NetworkConfigurationManager
, granted that the list of configurations is updated via updateConfigurations()
就可以使用新的配置。新配置包含密码,但您无法从 Qt API 对其进行编辑。
如前所述,本机代码是唯一的解决方案。不过,Apple does not want you to mess up with WiFi programatically 因为私有 API 不能在 iOS > 5.1 中使用(Qt 支持的最旧版本与 Qt 5.4 一样)。