SOCKET 传输大文件应该怎么做?
筑台封神 2014-05-29 04:04:31 小弟第一次发帖,请大牛们多多捧场!
现在公司要我做一个C语言的SOCKET通信(TCP),要求是千兆网最低50M每秒的传输速度!(S-send ;C -recv)
小弟试着写了一下,遇到了以下问题:
1,不建立C/S端的缓冲,直接传输,只能传输小文件,遇到大文件就会出错
出现1的问题,是因为发端太快,造成丢包
2,基于1,我想到虽然是流传输,是不是也可以像UDP那样自己自己定义一个校验机制,就是将一个文件切块,然后每一个块加上长度,这样,在传输到C端之后,必须得到C端的确认(也就是C recv的和块中定义的长度一致),才发下一个块。
2的方法,是能解决传输大文件的问题,但是速度慢,达不到要求!
3,基于2的问题,我想到,是不是可以在S端自己定义一个缓冲区:
定义缓冲用了两种方法,一是维护一个链表,动态的定义。二是直接划分出一块内存,静态的缓冲!
目前正在用3的思路在写代码。
想问问各位大牛们,有什么好的建议!!
欢迎大牛们们发言!
小弟在此谢过!