2015-02-23 425 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