2015-02-23 86 views
1

我正在尝试创建一个基于QT的应用程序来扫描和连接WiFi网络。我使用this example作为参考代码。在QT中为WiFi连接设置静态IP

  1. 是否可以使用QNetworkConfiguration或任何相关的类为WiFi连接分配静态IP?
  2. 如何认证受密码保护的网络?

在此先感谢......

我曾尝试使用下面的代码集创建的网络工作会议..

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(); 
} 
+0

请说明你试图做什么? – 2015-02-23 12:07:46

+0

@ Johan Karlsson。请检查编辑部分 – zappy 2015-02-23 12:20:00

回答

1

你就是不行。至少不只是使用Qt API。

请仔细阅读this,特别是thisQNetworkConfiguration只是一个管理网络配置的工具。编辑这些配置需要本地代码/操作系统交互。从第二个链接:

请注意,QNetworkConfiguration对象本身仅提供有关配置详细信息的有限信息。它的主要目的是充当配置标识符,通过该配置标识符可以创建,销毁和监视链路层连接。

即使“启动/停止网络接口”声明也不完全正确,因为此功能仅在某些操作系统(不是移动设备)中可用。请参阅第二个链接的“平台功能”部分以获取更多详细信息。

相同的推理适用于密码问题。一旦在操作系统中注册了相应密码的网络(由于本地代码或用户的物理注册),NetworkConfigurationManager可以使用新配置,只要配置列表通过updateConfigurations()更新即可。新配置包含密码,但不能从Qt API进行编辑。

如上所述,原生代码是唯一的解决方案。尽管如此,Apple does not want you to mess up with WiFi programatically因为它的私有API不能用于iOS> 5.1(Qt支持的最旧版本和Qt 5.4)。

+0

...非常感谢您的回复....并对不起,我不与IOS工作....但与Ubuntu 14.04平台... – zappy 2015-02-24 04:58:11

+0

你刚刚阅读的iOS部分或全部答案?这部分只是为了展示iOS的进一步限制。在另一个平台上,本地代码允许你做(几乎)所有事情,这在iOS中是不可能的。至于Ubuntu,答案中提到的表格中的“* nix”部分适用......只是看一看。 – BaCaRoZzo 2015-02-24 08:39:47