+-
c# – 如何判断Socket的发送缓冲区中有多少数据
我可以通过调用Socket.IOControl(IOControlCode.DataToRead,null,outValue)来判断Socket的接收缓冲区中有多少数据;

是否有相当于告诉Socket的发送缓冲区中有多少数据?

我需要在带宽和延迟受限的网络上发送尽可能多的UDP数据包,并且我遇到了溢出发送缓冲区的情况,因此我需要实现某种形式的限制.

最佳答案
UDP套接字没有发送缓冲区. UDP的SO_SNDBUF套接字选项的含义是您可以发送的数据报大小的限制.内核通常每个NIC都有一个数据包队列,但是它针对所有协议进行组合,并且没有用户域API来查询其大小. IP层,然后是硬件,可以静默地丢弃数据包. TCP知道如何处理,UDP没有.因此,除非.Net或其他微软奇迹在用户级域库中有这样的缓冲,否则你运气不好.

接收方向接收方发送有关丢弃的数据包,请求重新发送,回退到TCP等的信号.这也意味着从发送方进行某种排序.

希望这可以帮助.

点击查看更多相关文章

转载注明原文:c# – 如何判断Socket的发送缓冲区中有多少数据 - 乐贴网