我需要使用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地址尚未修改。所以,我的问题是:
IP ADDRESS CHANGED
这种方法显然不起作用?答案 0 :(得分:2)
您正在更改hostAddress
中存储的地址。您现在可以使用hostAddress
(例如)打开192.168.1.143
上端口的流套接字。这与您碰巧运行的主机的任何IP地址无关 - QHostAddress
只是任何IP地址的表示。
要在主机上设置网络接口的地址,您需要是root用户,并使用本机工具(或外部流程 - 例如/sbin/ifconfig
)。