QHost地址集地址不起作用
QHostAddress setAddress not working
我需要使用 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地址尚未被修改。所以,我的问题是:
- 我该怎么做?
- 如果这种方法显然不起作用,为什么我可以看到
IP ADDRESS CHANGED
?
您正在更改存储在 hostAddress
中的地址。 您现在可以使用hostAddress
(例如)打开流套接字到192.168.1.143
上的端口。 这与你碰巧运行的主机的任何 IP 地址无关 - QHostAddress
只是任何 IP 地址的表示。
要在主机上设置网络接口的地址,您需要是 root 用户,并使用本机设施(或外部进程 - 例如/sbin/ifconfig
)。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 为什么 ulimit -v 在 Clang 的地址清理器下不起作用?
- 禁用地址共享注册表不起作用
- 赋值不起作用,但带有取消引用运算符的地址起作用?
- 指针不起作用,返回地址不是值
- 获取基本地址不起作用
- 从存储在 CTreeCtrl 的 LPARAM 中的结构中检索地址/指针 (IXMLDOMNode*) - 不起作用
- C++ 获取处理地址不起作用
- QHost地址集地址不起作用
- <<运算符重载不起作用;仍在打印对象地址