- FTPFactory.cs原版中的getFileList是使用的NLST命令,只能获取名称列表(包括目录名和文件名)
- 因为要区分目录名和文件名,修改了getFileList的代码,使用LIST命令,然后解析返回的字符串,分别得到目录列表和文件列表
但是发现LIST经常出现返回列表不全的情况,解决办法:
将
while(true)
{
int bytes = cSocket.Receive(buffer, buffer.Length, 0);
mes += ASCII.GetString(buffer, 0, bytes);
if(bytes < buffer.Length)
{
break;
}
}
改成:
while(true)
{
int bytes = cSocket.Receive(buffer, buffer.Length, 0);
mes += ASCII.GetString(buffer, 0, bytes);
if(bytes == 0)
{
break;
}
}
因为Receive得到的字节数常常填不满buffer,而实际上还有后续的数据。