关于,C/S传输数据时,并发的socket数,多少个合适?10

来源:互联网 发布:供需信息网站源码 编辑:程序博客网 时间:2024/05/02 02:25
 0
C/S的客户端,采用HTTP(HTTPClient)传送一个数据块(大概10M)
Client启动了多个socket,多线程并发传输这个数据块的不同部分。
测试发现,客户端启动2个socket,和启动5个socket,所花的时间差不多。

疑问:
1、一般情况,多少个socket并发最好,这个数据一般怎么得出?
2、对于一个client,和server最大达传输速度,如何得到(假设server资源是无限的)
问题补充
我的理解:一个socket代表一个IO,多线程应该有意义吧,比如用flashget下载数据,用多线程同时下载文件的不同部分,我的理解不知对不对?

问题补充:<div class="quote_title">niumd 写道</div><div class="quote_div">线程数和CPU,线程调度也有关系;启动多少个需要你自己测试得出; <br />不知道为何使用socket发送10M的数据块,楼主可否说下应用,也许有更好的方法</div> <br />使用场景如下,请LS看一下有没有更好的方法 ,谢谢~~~ <br /> <br />1、服务器同时支持C/S, B/S,为了简化服务开发,C和S也采用HTTP传输,采用 hession+httpclient方式 <br />2、现在C从S上下载、上传文件,文件大小在10K~300M(压缩后在1K~50M)之间,并发数在100左右 <br />3、为了提高下载和上传的速度,思路是在:在C端开多个socket同时从服务器上获取数据。 <br /> <br />ps:现在尝试使用apache的commons-fileupload来实现,但要实现断点续传,进度监控、下载的过程终止等功能,有一定的工作量,不知道有没有现成的第三方库? <br /> <br />

问题补充:<div class="quote_title">mathfox 写道</div><div class="quote_div">你上传和下载使用多线程的瓶颈是不一样的。 <br /> <br />你上传你的上行网络已经满载了。 <br /> <br />你下载,一个线程连接的下载还未到你下行网络还未满载</div> <br /> <br />在具体实现上,我可不可以这样理解: <br />1、上传主要取决于客户端的IO、网速、服务器的处理能力,一个客户端使用一个线程(一个socket)处理就可以了。 <br /> <br />2、下载由于一个线程还未满载,可以使用多个线程来做。 <br /> <br />ps:刚才google了一下,这方面理论总结比较少,LS能否提供的详细点,谢谢~~~
原创粉丝点击