能力值:
( LV4,RANK:40 )
|
-
-
2 楼
TCP。不需要损坏重传,你想太多了。。
分包只是一个策略而已,包头+包体,足已,,,接收其实就是防止多线程写文件而已,可以把打开的句柄保存起来,不用每次去打开。。节约时间。
|
能力值:
(RANK:20 )
|
-
-
3 楼
第一 TCP也并不保险,在网络情况差也会频繁丢包
二 一个2M的文件就要分包了,C++一个数据包再大也是有限制的
三 如何解决多线程传输的协议问题,就是收包 发包 如何定协议
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
第一个包上传分块信息:每块编号、大小、偏移和HASH
每传完一个块 服务端通知你下一块偏移和大小
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
毕业设计?
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
首先,多线程是用来处理并发任务的。。。
例如:
你的服务器传输是面向多个客户端的,你可以给每一个接入的客户分配一个线程来处理。。。
又或者你要传输大量的零碎文件,你可以让每一个文件对应一个线程来处理。。。
当然线程个数也是有上限的。。。物极必反嘛。。。
但是如果你是想把一个文件分解成N份,用N个线程来传输,那就没有什么意思了。。。
关于分包,你在应用层只需要保证你的文件分片可以正常传输就可,每个文件分片内部交由TCP协议自己解决ACK和重传问题。。。例如一个文件按一片4KB大小分开,一次发送4K数据+2字节CS+2字节size,客户端收到后计算这4K的校验和和CS中的是否一致,一致就请求下一片,不一致就请求重传一次。。。
当然了,有些时候UDP也是一个很好的选择。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
假设100M,客户端10线程发送,第一个线程发送0-10240,第二个发送10241-20480。......如此类推。服务端共用一个文件句柄,收到数据后,写入指定的数据到指定偏移,至于分包之类,自己看怎么做合适就好,比如一次64k
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
可以使用hpsocket,基于iocp的,高性能,高稳定性
|
能力值:
(RANK:20 )
|
-
-
9 楼
不好意思 说错了,其实这个问题是,多个客户端对应多个服务端线程的处理,如何标示,丢包之后的处理,服务端线程处理结束是退出还是休眠,客户端线程处理结束是退出还是休眠,如果退出就必然下次包来了又要重新创建,如果休眠如何标示对应的线程,还有如果出现了丢包,线程就会一直休眠,占用资源。
|
能力值:
(RANK:20 )
|
-
-
10 楼
多对多的包传输,感觉有点晕。
|
|
|