gpt4 book ai didi

c++ - Qt - QUdpSocket 绑定(bind)不断失败

转载 作者:行者123 更新时间:2023-11-28 04:41:20 24 4
gpt4 key购买 nike

我有这两行代码。我需要一个只接收数据的套接字

第一种方法有效,我收到日期(从第二种方法中的 ip/端口)

第二种方法总是返回false。

我不明白其中的区别,也找不到问题所在。

有人知道如何解决这个问题或我做错了什么吗?

 udpSocket = new QUdpSocket(); 
bool result = udpSocket->bind(QHostAddress::Any, 7755);


QHostAddress address("the ip")
udpSocket = new QUdpSocket();
bool result = udpSocket->bind(address , 7755);

最佳答案

在第一种方法中,当您绑定(bind)套接字时 bind(QHostAddress::Any, 7755)它将监听您系统上的所有接口(interface);因此它将成功绑定(bind),知道至少有一个接口(interface)已启动。

在第二种方法中,当您使用 QHostAddress address("the ip") 设置 IP 地址时您需要确保接口(interface)与系统中的 IP 地址一致(在 Win 上使用 ipconfig/在 Linux 上使用 ifconfig)。现在构造函数将自动从传递的字符串(“ip 地址”)中检测它的 IPv4 还是 IPv6。如果您没有指定类型,那么您可以将地址构造为 Any并将你的套接字绑定(bind)到它:

QString string("192.168.1.1");
QHostAddress address(QHostAddress::Any);
address.setAddress(string);
udpSocket = new QUdpSocket();
bool result = udpSocket->bind(address , 7755);

关于c++ - Qt - QUdpSocket 绑定(bind)不断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com