C++中TCP通信实现文件传输
2021-04-13 18:25
标签:通过 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
下一篇:Java基础复习(1)