码迷,mamicode.com
首页 > 编程语言 > 详细

C++中TCP通信实现文件传输

时间:2020-07-19 18:10:07      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:通过   ini   ram   完成   输入   优化   结束   net   连续   

作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image file。整个project的目的还是比较明确的。我主要列出了一下几个问题,需要在代码中实现。

1. 实现main函数的接口

因为client和server 需要的参数需要通过命令行输入,所以需要用getoptlong函数来实现。

2. 实现socket programming中的功能

在这个项目中提供了socket programming的接口,按照需要设置即可。

3. 连续send造成的粘包问题

由于TCP拥有优化算法,可以将多个send的数据被一个recv收到,所以造成粘包问题。本项目中会要求先发送文件长度,再发送文件,连续发送造成文件长度和文件粘合在一起,造成无法读出文件。解决办法是加入sleep()函数在两次send之间。这样就能将两次send分开了。

4. 大文件的接收问题

大文件的接受容易由于buffer长度的限制,造成丢失。因此需要设置一个MAX_MESSAGE_SIZE。分成多次完成接收。本来想要在send端也多次发送,效果不好。

5. 文件的读写

由于文件的类型不确定,打开文件都需要用binary格式,读写的时候一定要注意,用read()和write()函数,千万不要<<或者>>,因为后一种方式没法确定文件类型。

大概就是这些,因为课程没有结束,暂时就不放代码了,以后补齐。

 

C++中TCP通信实现文件传输

标签:通过   ini   ram   完成   输入   优化   结束   net   连续   

原文地址:https://www.cnblogs.com/huzdong/p/13340522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!