基于MFC WinInet类FTP客户机在服务器创建新目录功能的实现,包括 1).FTP客户机能登录到FTP服务器并在服务器上创建一个新目录。 2).基于多线程技术实现创建新目录的功能。其实现效果如下。 给出实现的三个函数即可,分别为:void CFtpDlg::OnClickedButtonCreatedir()、BOOL mtCreatedir(CString strFtpSite, CString strName, CString strPwd, CString strNewdirname)、UINT mtCreatedirectory(LPVOID pParam)。
时间: 2024-03-05 08:55:14 浏览: 68
好的,我会尽力回答你的问题。首先,基于MFC WinInet类FTP客户端,在服务器上创建新目录的功能需要以下步骤:
1. 使用 CFtpConnection 类连接 FTP 服务器,并使用 CFtpConnection::SetCurrentDirectory 函数进入目标目录。
2. 使用 CFtpConnection::CreateDirectory 函数在目标目录中创建新目录。
3. 断开与 FTP 服务器的连接。
为了实现多线程创建新目录的功能,需要创建一个新的线程来执行创建目录的操作。具体实现如下:
1. 在 CFtpDlg 类的 OnClickedButtonCreatedir 函数中创建一个新的线程,并将参数传递给线程函数。
```
void CFtpDlg::OnClickedButtonCreatedir()
{
CString strFtpSite = ...; // 获取 FTP 服务器地址
CString strName = ...; // 获取 FTP 用户名
CString strPwd = ...; // 获取 FTP 密码
CString strNewdirname = ...; // 获取新目录名
AfxBeginThread(mtCreatedirectory, (LPVOID)new CString(strFtpSite + "/" + strNewdirname + "/"), THREAD_PRIORITY_NORMAL);
}
```
2. 在线程函数 mtCreatedirectory 中,使用 mtCreatedir 函数创建新目录。
```
UINT mtCreatedirectory(LPVOID pParam)
{
CString strFtpSite = ...; // 获取 FTP 服务器地址
CString strName = ...; // 获取 FTP 用户名
CString strPwd = ...; // 获取 FTP 密码
CString strNewdirname = (CString*)pParam; // 获取新目录名
mtCreatedir(strFtpSite, strName, strPwd, strNewdirname);
return 0;
}
```
3. 在 mtCreatedir 函数中实现创建新目录的功能。
```
BOOL mtCreatedir(CString strFtpSite, CString strName, CString strPwd, CString strNewdirname)
{
CFtpConnection ftp;
if (!ftp.Connect(strFtpSite, strName, strPwd))
{
AfxMessageBox(_T("连接 FTP 服务器失败!"));
return FALSE;
}
if (!ftp.SetCurrentDirectory("/"))
{
AfxMessageBox(_T("设置当前目录失败!"));
ftp.Close();
return FALSE;
}
if (!ftp.CreateDirectory(strNewdirname))
{
AfxMessageBox(_T("创建新目录失败!"));
ftp.Close();
return FALSE;
}
ftp.Close();
return TRUE;
}
```
这样,就可以实现基于多线程技术的 FTP 客户端在服务器上创建新目录的功能了。
阅读全文