有一个大约100M的文本文件需要在Client/Server结构中,由Client发往Server,
Client问题:
一般的书中是先定义一个CString str1之后将数据读入str1,
将其作为一个整体使用Send(str1,strlen(str1),0);发送,但一次发送的数据量有限制,如果多次发送(循环使用Send()),下次从文件中读数据的位置应从文件指针的current开始,而CSocket又不支持Seek()等函数,如何解决?
Server问题:
一般的书中是先定义一个char str1[1000];之后将数据写入str1(Receive(str1,1000,0);)由于str1不能定义得太大,所以一次只能接收有限数据,若想将接收的数据写入文件A,由于CSocket又不支持Seek()等函数,所以下次追加写入文件A时,将冲掉上次写入的数据。如何解决?我希望的文件传输流程为:
客户发送一次数据W(小于4K),
服务器接收后写入文件A,
服务器向客户发出指示C,
客户接收C后继续发送下一段数据,
如此到结束。

解决方案 »

  1.   

    嗯,好像类似传大文件的代码好多吧,去vchelp看看吧
      

  2.   


    用CreateFile来打开文件,用ReadFile来把数据一段一段地从文件里读取到一个缓冲区里,然后就用send来发送这个缓冲区里的数据
    服务器端也一样
    用CreateFile创建你要保存数据的文件,用WriteFile把你接收到缓冲区里的数据写到文件里
    你最好自己定义一个简单的协议来保证数据传输的正确和完整
      

  3.   

    用RTP协议来传输,既能保证传输的数据正确性,又能保证速度和效率,这项技术原来用在视频传输上,本人即视频技术的开发人员,并且用来传输大的文件效果十分理想,并通过Internet测试成功。
    有意者联系Email:[email protected]