我在Windows XP上使用QUdpSocket发送一些数据。在每10秒,我发送大约100到500个数据包,每个约50个字节。主机每次发送少量数据包都没有任何问题。主机发送500个数据包时出现问题,每10秒发生一次。
使用writeDatagram(...)时收到错误消息“无法发送数据”。 500个数据包的大部分被发送(使用wireshark检查),但有些不发送(最后一个)。
我认为当套接字的写缓冲区已满时会出现问题。但是我不知道如何用Qt来检查它,只是等待缓冲区准备好写更多的数据。
如果没有Qt,我可以使用select(...)方法来检查套接字是否准备好并一次发送1个字节。但我怎么能用QUdpSocket来检查它。没有这样的方法。此外,bytesToWrite()似乎总是返回零。
我知道我可以睡觉并重试,但我不认为这种方法是可靠的。该方法可能由于其他原因而失败。操作系统有一个很好的方法,它叫做select()。
感谢您的帮助。