问题描述
最近有个想法,想通过HTTP实现一边上传一边下载,实现类似实时传输的目的。所以这里有两个问题:A,B为两个客户端,WebServer(以下简称WS)起到一个中转的作用1.A想传送一个文件给B,这里用两个方法:第一,A先将整个文件上传给WS,上传完了然后通知B(先不关心怎么去通知),B去WS下载;第二,A开始向WS上传文件,B几乎同时开始去WS下载(假设不存在实现的问题),A上传完毕,B也基本上下载完毕;这个两种方法相比较而言,第二种比第一种快吗?快多少?2.这里就讨论一下如何实现的问题,比较概括来说(先不考虑多用户的问题),WS使用RandomAccessFile来保存A上传的文件,通过RandomAccessFile的length方法可以知道文件的实时大小(不停的写)。B发送GET请求,servlet向response里写已经保存下来的文件,B接收的文件完整后结束。希望有哪位大侠有实现过这个想法,有兴趣可以一起讨论。
解决方案
解决方案二:
每次只读n个字节+生产消费模式??
解决方案三:
楼主有创意,关注....
解决方案四:
我感觉一般情况下,第二种方法会比第一种快。不过,是两个不同的客户端,所以第二种方法也不能算“一边上传,一边下载”了。应该算是WebServer的基本功能了,只要解决同步问题就行了,就是避免下载者下载速度比上传速度快。
解决方案五:
怎么这个模式像是电驴下载器的下载模式啊?
解决方案六:
关注
解决方案七:
原理类似于传送文件,A端通过代理将文件传到中转服务器(也就是WS)的同时发送给B,可以参考Spark传送文件功能,就是在Stun穿透失败的情况下走代理
时间: 2024-10-30 17:59:00