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

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

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

7. 解析状态码

int CFTP::get_state_code( const char* p_buf )
{
	int res_code = -1;
	if(p_buf[0]>'9'||p_buf[0]<'0')
		return res_code;

	//分离出字符串
	std::string s(p_buf);	
	std::istringstream ss(s);  //拷贝构造输出串流
	ss>>res_code;  //输入到t
	return res_code;
}

从返回的字符串中解析出数字表示的状态码,此时用到了字符串流istringstream。

8. 登录FTP服务器

int CFTP::ftp_login( const char* user,const char* pass )
{ 	
	//1.用户名
	sprintf_s(m_cmd,"USER %s
",user); 	
	int err = ftp_sendcmd(m_cmd,m_resp,sizeof(m_resp)); 
	if(err)
		return -1;
	//得到返回码
	int code = get_state_code(m_resp);
	//331 Password required for usernaem.
	if(code != 331)
		return -1;	
	//2.密码
	sprintf_s(m_cmd,"PASS %s
",pass); 
	err = ftp_sendcmd(m_cmd,m_resp,sizeof(m_resp)); 
	if(err)
		return -1;
	//得到返回码
	code = get_state_code(m_resp);
	//230 User logged in.
	if(code != 230)
		return -1;	
	return 0; 
} 

通过发送命令“USER 用户名”登录ftp服务器,根据返回码判断登录是否成功,返回331等待用户输入密码,格式为“PASS 密码”,登录成功的返回码是230。

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