QHost地址集地址不起作用

QHostAddress setAddress not working

本文关键字:地址 不起作用 QHost      更新时间:2023-10-16

我需要使用 Qt 更改 Linux 应用程序上的主机 IP 地址。我已经阅读了有关此类中的QHostAddress和方法setAddress的文档,其中说:

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

我知道使用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

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

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