2016-01-05 19:46:22|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, 网络通信|来源:唯设编程网
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。
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。