QHostAddress setAddress无法正常工作

时间:2016-01-29 12:53:21

标签: c++ qt

我需要使用Qt在Linux应用程序上更改主机IP地址。我已经在这个类中引用了有关QHostAddress和方法setAddress的文档,其中包含以下内容:

  

"设置由地址指定的字符串表示>指定的IPv4或IPv6地址(例如" 127.0.0.1")。返回true并设置地址>如果地址已成功解析;否则返回false。"

我知道可以使用QProccess,但我尝试使用Qt-way来做到这一点。我非常困惑,因为我的应用程序没有运行root权限,所以我发现很难直接使用Qt类执行此操作。然后我试试这个:

QHostAddress hostAddress;
bool ipChange = hostAddress.setAddress("192.168.1.143");
if(ipChange) qDebug() << "IP ADDRESS CHANGED";
else qDebug() << "IP ADDRESS NOT CHANGED";

此代码的结果为"IP ADDRESS CHANGED",但在终端中执行ifconfig,我的IP地址尚未修改。所以,我的问题是:

  1. 我怎么能这样做?
  2. 为什么我可以看到IP ADDRESS CHANGED这种方法显然不起作用?

1 个答案:

答案 0 :(得分:2)

您正在更改hostAddress中存储的地址。您现在可以使用hostAddress(例如)打开192.168.1.143上端口的流套接字。这与您碰巧运行的主机的任何IP地址无关 - QHostAddress只是任何IP地址的表示。

要在主机上设置网络接口的地址,您需要是root用户,并使用本机工具(或外部流程 - 例如/sbin/ifconfig)。