emp;
pChar[nReceived] = '\0';
strTemp = pChar;
// 是否接收完?
int nFind = strTemp.Find("\r\n");
if (nFind == -1)
{
continue;
}
m_sData = strTemp;
if (strTemp.Right(2) != "\r\n")
bEnd = FALSE;
}
return TRUE;
}
BOOL CFtpClient::IsConnected()
{
return m_bConnected;
}
BOOL CFtpClient::ParseData()
{
if (m_sData.IsEmpty())
{
m_sError = _T("传来的数据为空!");
return FALSE;
}
CString strData = m_sData,strTemp,strName;
int nFind;
BOOL bFolder;
// 将cFtpFileFind中的文件记录清空
m_findFile.RemoveAll();
// 逐行分析文件或目录名
while (1)
{
nFind = strData.Find("\r\n");
if (nFind == -1)
break;
// strTemp保存当前的第一行,即待分析的行
strTemp = strData.Left(nFind);
// 去掉已分析的第一行
strData = strData.Right(strData.GetLength() - nFind - 2);
nFind = strTemp.ReverseFind(' ');
// 将名字记录在strName中
strName = strTemp.Right(strTemp.GetLength() - nFind - 1);
strTemp = strTemp.Left(nFind);
// 去掉后面的空白符
strTemp.TrimRight(" ");
nFind = strTemp.ReverseFind(' ');
// 如果是目录,则倒数第二个字段是“<DIR>”
strTemp = strTemp.Right(strTemp.GetLength() - nFind - 1);
bFolder = (BOOL)(!strTemp.Compare("<DIR>"));
m_findFile.AddTail(strName,bFolder);
}
return TRUE;
}
BOOL CFtpClient::ChnDir(LPCTSTR lpszName)
{
CString strTemp = lpszName;
// 如果选的是“..”目录,则发送CDUP命令
if (!strTemp.Compare(".."))
strTemp = "CDUP\r\n";
else
strTemp.Format("CWD %s\r\n",lpszName);
// 发送更改目录的命令
if (!Send((LPCTSTR)strTemp,strTemp.GetLength()))
{
return FALSE;
}
if (!GetResponse())
{
return FALSE;
}
m
上一篇:
FtpClient.cpp
下一篇:
留学生语言学毕业论文