如何判断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等的信号。这也意味着从发送方进行某种排序。
希望这可以帮助。
你能分析标题吗? 可能有关于内容长度的信息。