C++|TCP 服务端中接收文件
讲解了如何使用 TCP 客户端发送文件,那么服务端是如何接收的呢?
今天就来讲解下这个功能吧!
服务器接收客户端发送的文件信息
1:定义接收数据结构体
首先,我们需要记录文件信息,也就是文件名称、文件大小以及已经接收的文件大小。数据量较多,这里采用的结构体进行存储。
客户端与服务器一般都是多对一的关系,我们在服务端这边记录客户端数据时采用了 std::vector<ServerDeviceFilesInforSt> m_vetInfo 成员变量。根据实际使用习惯可以定义其他容器比如:map、list
2:记录客户端发送的文件信息
首先,从众多的客户端中查询出当前发送消息的客户端
当我们查询到匹配客户端后,如果当前在结构体中记录的总体文件大小 ==0 时,说明是第一次存储文件的基本情况,解析数据并进行存储
复制代码
3:记录实际文件信息
当结构体中的文件总体大小不为 0 时,说明正在接收实际的有效数据
获取接收真实的文件大小
复制代码
将接收的内容存储到文件指针中存储
复制代码
记录到文件指针后记录已经接收的实际长度
复制代码
当服务端记录的文件大小 <= 接收的大小时,说明文件接收完成
复制代码
这样就可以实现第一次接收的是文件名称以及大小,以后的接收的数据是实际的文件内容了。
以上便是服务端接收的实际操作。
我是中国好公民 st,一名 C++开发程序媛~
版权声明: 本文为 InfoQ 作者【中国好公民st】的原创文章。
原文链接:【http://xie.infoq.cn/article/e283861ab33210befbec699e9】。文章转载请联系作者。
评论