Qt - QUdpSocket 绑定不断失败

Qt - QUdpSocket bind failed constantly

本文关键字:失败 绑定 QUdpSocket Qt      更新时间:2023-10-16

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

第一种方法正在工作,我收到日期(来自第二种方法中的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(QHostAddress::Any, 7755)时,它将侦听系统上的所有接口;因此它将成功绑定,知道至少有一个接口已启动。

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

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