FTP 编程 5 文件传输与目录切换
接下来说最后一个 FTP 实现的功能点了,文件传输加上前面几篇文件介绍的功能实现组合起来基本就能实现一个 FTP 程序了,但这个只是简单的实现,和现实中能使用的还有很多要完善,但现在的时间比较紧张,没有太多时间弄了,还有好多的东西要学。所以如果各位有兴趣的话,可以自己去完善,反正要用的基本就是这些,和其他组合一下,自己摸索完善一下,比如弄个图像界面之类的。
文件传输
本文以客户端上传文件为例,但客户端下载原理基本雷同,会其一就能写出另外一个的。文件上传的大概如下:
- l.首先客户端向服务端发送命令说明自己要想服务端上传文件了
- 2.服务端收到客户端的命令,在本地创建相应的文件
- 3.客户端再向服务端发送文件的大小信息,这个信息是非常有用的,用于服务端如何判断文件传输是否完毕
- 4.服务端收到文件大小信息,用于统计
- 5.客服端打开相应的文件进行读取传输,用一个循环,在循环里面每次读取1024字节并传输,也就是分段传输,不是一次性读取完并传完
- 6.服务端用一个循环接收文件信息,每次接收1024字节(与客户端同步),并统计相应的剩下的文件大小,当文件大小等于小于0时传输完毕
- 7.客户端读取完毕,关闭文件,等待下一命令
- 8.服务端接收完毕,关闭并保存文件,等待客户端的下一个命令
具体的代码如下:
客户端文件上传代码
bool Client::uploadFile(std::string filePath)
{
//打开文件
char* workPath = _getcwd(NULL, 0);
if (workPath == NULL) {
std::cout << "Get current work path failed\n";
}
else {
std::cout << workPath << std::endl;