日期:2014-05-20  浏览次数:20948 次

JAVA IO流传送数据限速
现在要求用IO流传送文件的时候有个限速,比如说每秒钟最多传送10KB的流量,请问用JAVA代码怎么做到?

我们在开发中遇到个问题,联通用户用手机下载文件,我们需要把文件通过IO流写出去,由于联通要统计用户的流量,我们需要先把文件写到联通公司的网关上,再由网关传送到用户手机里,现在出现了问题,从我们这里传送文件到网关速度是比较快的,而从网关发送文件到手机里的速度是比较慢的。结果就出现问题,我们已经发送完了数据,就以为用户手机已经下载完文件,就当他已经消耗了流量,而其实客户还在接收数据中,这时候如果客户手机断开下载,他的流量停止消耗了,但我们这边,还是认为他已经下载完(可能会给他送话费了)。

------解决方案--------------------
IO流,基本上就是 byte[] 
要限速,最直接的做法就是: 一边发一边算。

比方说把内容接收进来的时候,每1*1024个字节做一包,打上序号,放入队列
发送的时候,一包一包的发,发一包记一个数,发出的包数达到流量限制了就hold on。

要么,就在以太网协议上想办法,做流控。 不过那个估计比较困难。

就想到这些,先扔个砖头