void Cftp_clientDlg::OnBnClickeddownload()
{
if(!Pasv_mode())
{
return;
}
int index = m_list.GetCurSel();
CString filename = "";
m_list.GetText(index,filename);
char send_msg[100] = "RETR ";
char name[100] = "";
strcpy(name,filename);
strcat(send_msg,name);
strcat(send_msg,"\r\n");
send(sock_client,send_msg,strlen(send_msg),0);
MySockRecv(); //接收服务器返回信息的函数
fileStore(filename);
MySockRecv();
AfxMessageBox(_T("文件已下载!"));
}
void Cftp_clientDlg::fileStore(CString filename)
{
CFileDialog save_dlg(false,NULL,filename);
if(save_dlg.DoModal() == IDOK)
{
CString full_name = save_dlg.GetPathName();
char fileContext[1024] = "";
FILE* bin = fopen(full_name,"wb");
if(bin = NULL)
{
AfxMessageBox(_T("文件打开失败!"));
return;
}
while(0 != recv(sock_temp,fileContext,1024,0))
{
fwrite(fileContext,1,1024,bin);
memset(fileContext,0,1024);
}
/*fclose(bin);*/
closesocket(sock_temp);
}