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。