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

第一种方法正在工作,并且我收到了日期(第二种方法是从ip / port)

第二种方法总是返回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)时,它将监听系统上的所有接口;因此,只要知道至少一个接口已启动,它将成功绑定。

在第二种方法中,将IP地址设置为QHostAddress address("the 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);

08-16 00:53