通过socket如何发送文件(配置文件,可能超过1M,估计最大10M)
本人算法:
注意:采用自定义应用协议
先把文件拆分成N个包,每个包数据部分1024字节;
文件总长度,包个数,相对起始位置偏移量,数据部分长度(可能小于1024字节)---全部采用TLV结构;
在收到其中一个包之后,在接收端定义一个文件总长度的缓冲区,根据偏移量,写入相应的存储区域;
在完全收完之后,再将缓冲区内容写入一个文件.
不知这样的做法有何缺陷。
或者有更好的算法,请各位多多指教!
[解决办法]
windows?linux?
[解决办法]
方法不错。
如果你用tcp的话, 不需要这么麻烦。
[解决办法]
windows下有个异步传输文件的API,你把文件句柄给它就可以,要不然把文件map进来,然后发送.
还有用ACE封装好的接口也可以
[解决办法]
感觉你的考虑比较合理了,其实类似实现可参考RTP/RTCP协议
[解决办法]
用tcp确实不用那么麻烦,你给出文件总大小就行,接收方会自己按顺序接收,不会乱序的,不过应该有更加简单的办法。
To foochow(一天又一天) : 你说的异步传输文件的API是什么?能帮着找下吗?(因为如果客户端发送的文件太大,发送端就需要分几个包把它发送出去,那么,接收端会自己判断什么时候客户端发完了吗?)还有你说的“把文件map进来,然后发送”是什么意思?特别大的文件也可以吗?我上次做的要求传输150M的大文件,试了好多办法都不行,后来没办法了,只好用笨办法做了下,在发送前先把文件大小带过去。现在也一直在寻求更简单的方法,你要是知道能否详细说明下。