我有这两行代码。
我需要一个只接收数据的套接字
第一种方法正在工作,并且我收到了日期(第二种方法是从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);