当用户从ftp服务器下载文件时
使用到ftp命令是retr
命令用法与上传相似
首先
客户端向服务器发送RETR命令
然后根据获取文件的大小
利用函数Recv()进行接收
int length; //已经获取的文件大小
CString filename; //已经获取的文件名称
int i=0;
m_archive->WriteString("RETR "+"\r\n");
//调用Carchive类的WriteString()函数发送retr命令
char buff[1024]={0}; //设置缓冲区
SOCKET sock; //与服务器建立连接成功后返回的套接字句柄
CFile file(filename,CFile::modeReadWrite); //建立文件并指定文件属性为可读可写
while(length!=0)
{
::Recv(sock,buff,1024,NULL); //在套接字上接收数据到缓冲区
file.Write(buff,1024); //将缓冲区内容写到文件
length=length-1024; //从文件总大小中减去已经接收并写入文件中的大小
}
MessageBox("文件下载成功! "); //否则提示文件下载成功
在代码中
用户可以使用获取到的文件大小设置接受缓冲区大小
但是会导致一些不可预见的错误发生