QUdpSocket写缓冲区已满?

时间:2016-03-14 12:57:14

标签: c++ qt sockets qtnetwork qudpsocket

我在Windows XP上使用QUdpSocket发送一些数据。在每10秒,我发送大约100到500个数据包,每个约50个字节。主机每次发送少量数据包都没有任何问题。主机发送500个数据包时出现问题,每10秒发生一次。

使用writeDatagram(...)时收到错误消息“无法发送数据”。 500个数据包的大部分被发送(使用wireshark检查),但有些不发送(最后一个)。

我认为当套接字的写缓冲区已满时会出现问题。但是我不知道如何用Qt来检查它,只是等待缓冲区准备好写更多的数据。

如果没有Qt,我可以使用select(...)方法来检查套接字是否准备好并一次发送1个字节。但我怎么能用QUdpSocket来检查它。没有这样的方法。此外,bytesToWrite()似乎总是返回零。

我知道我可以睡觉并重试,但我不认为这种方法是可靠的。该方法可能由于其他原因而失败。操作系统有一个很好的方法,它叫做select()。

感谢您的帮助。

0 个答案:

没有答案