我按照自己3的思路去完成代码,也就是在Server端,我分了两个线程,一个线程用于读取文件,并将读到的buf加入到一个动态链表尾部,另一个线程从此链表头取数据,进行send *** 作,并且对send的返回值进行校验,如果send的返回值和预期的发送字节数不同,则采用断点重传的方式,继续传输。在Client端口,也是用类似的服务端的机制,维护一个链表,进行读取。
需要说明的是:我维护的这个链表是由深度的,并通过深度来调节两个线程对链表的 *** 作。
这要考虑到文件I/O的效率和传输的速率的问题。关于I/O效率:buffer的值对I/O效率有很大影响,一般而言buffer缓冲区大小设置为1024 2048 或者4096会得到最佳速率。
关于传输:这个和你的带宽和网络状况有关了,带宽越大,网络状况越好自然传输速度就快。
至于编码,你多线程传输跟单线程传输效率基本上差不多。跟普通文件一样的方式传输就行。
如有不同意见的朋友请指教!谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)