在QT中使用QUdpSocket时提示QUdpSocket::joinMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState
在网上查了所谓的解决办法都不管用,尝试什么将QUdpsocket::NotShareAddress改为QUdpSocket::ShareAddress都不行,最后发现是因为自己在加入组播前没有绑定端口号导致的错误,然后总结出了下面两个可能出现该错误的原因
原因
我总结了两个可能出错的原因有两种(并非一定就是这两种错误):
(1)绑定的协议不是ipv4协议,因为目前使用的还是ipv4
;所以确保为:
sock.bind(QHostAddress::AnyIPv4,端口号);
(2)是否已经绑定端口
,在未绑定端口的情况下是加入不了组播的;因此需要先绑定一个端口再去加入组播地址
(个人感觉第二种出错的几率可能高一点,所以一定要检查代码是否已经绑定了端口再加入组播!!!)