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

2021-04-13 18:25

阅读:430

标签:通过   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


评论


亲,登录后才可以留言!