日期:2014-05-16  浏览次数:20686 次

TCP连接如何获取当前Sender buffer中已经缓存的数据量
为了避免拥塞,我期望获取sender   buffer中已经缓存的数据量,可以有选择的丢弃一些不重要的数据,而不是等到buffer满发送失败以后,如何获取?

------解决方案--------------------
socketctl/ioctrl应该可以设置,
linux中在proc中还可以设全局的。
------解决方案--------------------
你可以把buffer设得小一些,send时如果buffer满的话你通过send的返回值就知道了。
------解决方案--------------------
用QoS
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/rzak8/rzak8kickoff.htm

------解决方案--------------------
调buffer大小没有用的,关键在于你用send把数据送进buffer之后,无法把丢弃!TCP会重试很久,而后续的数据无法send,
TCP的这种特性无法满足媒体数据的这种要求!媒体数据的传送通常有两种方法
1、用UDP,用UDP的话很麻烦,需要自己考虑如何确认,重发还是放弃!
2、用支持QoS的TCP