C/S的客户端,采用HTTP(HTTPClient)传送一个数据块(大概10M)
Client启动了多个socket,多线程并发传输这个数据块的不同部分。
测试发现,客户端启动2个socket,和启动5个socket,所花的时间差不多。
疑问:
1、一般情况,多少个socket并发最好,这个数据一般怎么得出?
2、对于一个client,和server最大达传输速度,如何得到(假设server资源是无限的)
问题补充
我的理解:一个socket代表一个IO,多线程应该有意义吧,比如用flashget下载数据,用多线程同时下载文件的不同部分,我的理解不知对不对?
你上传和下载使用多线程的瓶颈是不一样的。
你上传你的上行网络已经满载了。
你下载,一个线程连接的下载还未到你下行网络还未满载
阻塞在同一个IO上,一个和n个线程有区别吗?
可以多试几次,大致就能得出最佳的线程数。
不过你的2个socket和5个socket的效率一样的结论很奇怪,能不能贴代码出来看看。
服务器端采用的是传统的IO还是NIO, 如果是传统的IO,那是多线程还是单线程. 如果是单线程, 那当然客户端2个和5个没有什么区别, 因为瓶颈在S端
。。。SOCKET建立连接的时间 可能比你发送的时间还长。。。 如果不是长连接 这种情况很难说多少合适。
线程数和CPU,线程调度也有关系;启动多少个需要你自己测试得出;
不知道为何使用socket发送10M的数据块,楼主可否说下应用,也许有更好的方法