C++实现的FTP案例代码解析

2016-01-05 19:46:22|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++, 网络通信|来源:唯设编程网

14. 递归方式创建文件夹

如果需要创建的目录的父级目录不存在,我们可以使用递归的方式创建指定目录:

int CFTP::ftp_mkdir( const char* dir )
{ 
	char path[300]={0};
	int err = -1;
	//进入根目录
	err = ftp_cd("/"); 
	if(err)
		return -1; 
	size_t i,j; 
	//  printf("strlen(dir):%d",strlen(dir)); 
	for(i=1,j=0;i<strlen(dir);i++)   //第一个字节是根目录 
	{ 
		path[j++] = dir[i]; 
		if(dir[i]=='/'){ 
			path[j++]=''; 
			printf("create :%s
",path);
			//进入子目录
			err = ftp_cd(path); 
			if(err){
				err = ftp_mkdirSingle(path);
				if(err)
					return -1;
				err = ftp_cd(path);
				if(err)
					return -1;
			}			
			//重新开始
			j=0; 
		} 
	} 
	path[j++]='';

	//进入子目录
	err = ftp_cd(path); 
	if(err){
		err = ftp_mkdirSingle(path);
		if(err)
			return -1;
		err = ftp_cd(path);
		if(err)
			return -1;
	}
	
	return 0; 
} 

15. 删除指定FTP目录

int CFTP::ftp_rmdir( const char* dir )
{ 
	sprintf_s(m_cmd,"RMD %s
",dir);
	int err = ftp_sendcmd(m_cmd,m_resp,sizeof(m_resp)); 
	if(err)
		return -1;
	//得到返回码
	int code = get_state_code(m_resp);
	//250 RMD command successful.
	if(code != 250)
		return -1;
	
	return 0; 
}

删除FTP目录使用的命令是RMD,执行成功对应的返回码是250.

发表评论0条 】
网友评论(共?条评论)..
C++实现的FTP案例代码解析