如何判断Socket的发送缓冲区中有多少数据

我可以通过调用Socket.IOControl(IOControlCode.DataToRead, null, outValue);来判断Socket的接收缓冲区中有多少数据Socket.IOControl(IOControlCode.DataToRead, null, outValue);

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

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

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

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

希望这可以帮助。

你能分析标题吗? 可能有关于内容长度的信息。