*******************关于c#编写的ftplibary的问题**************

kisskiki 2007-08-27 09:51:09
在使用网上某人编写的ftp的类库的时候,发现一个错误,不知道该如何解决,请大家帮忙看看
附加:我是用这个getfilelist来判断ftp服务器有没有指定名字的文件夹?如果当ftp服务器存在这个文件夹的时候却执行到刚才的地方就出现错误

/// <summary>
/// Return a string array containing the remote directory's file list.
/// </summary>
/// <param name="mask"></param>
/// <returns></returns>
public string[] GetFileList(string mask)
{
if ( !this.loggedin ) this.Login();

Socket cSocket = createDataSocket();

this.sendCommand("NLST " + mask);

if (!(this.resultCode == 150 || this.resultCode == 125)) return null;//throw new FtpException(this.result.Substring(4));

this.message = "";

DateTime timeout = DateTime.Now.AddSeconds(this.timeoutSeconds);

while( timeout > DateTime.Now )
{
int bytes = cSocket.Receive(buffer, buffer.Length, 0);
this.message += ASCII.GetString(buffer, 0, bytes);

if ( bytes < this.buffer.Length ) break;
}

string[] msg = this.message.Replace("\r","").Split('\n');

cSocket.Close();

if ( this.message.IndexOf( "No such file or directory" ) != -1 )
msg = new string[]{};

this.readResponse();----执行到这进入到函数体

if ( this.resultCode != 226 )
msg = new string[]{};
// throw new FtpException(result.Substring(4));

return msg;
}

/// <summary>
///
/// </summary>
private void readResponse()
{
this.message = "";
this.result = this.readLine();---进入函数体

if ( this.result.Length > 3 )
this.resultCode = int.Parse( this.result.Substring(0,3) );
else
this.result = null;
}

/// <summary>
///
/// </summary>
/// <returns></returns>
private string readLine()
{
while(true)
{
this.bytes = clientSocket.Receive( this.buffer, this.buffer.Length, 0 ); ---执行到这里的时候程序就停在这里不动了,估计是未取到数据所以一直被阻塞,谁能帮我解决这个问题,让程序能正确运行
this.message += ASCII.GetString( this.buffer, 0, this.bytes );

if ( this.bytes < this.buffer.Length )
{
break;
}
}

string[] msg = this.message.Split('\n');

if ( this.message.Length > 2 )
this.message = msg[ msg.Length - 2 ];

else
this.message = msg[0];


if ( this.message.Length > 4 && !this.message.Substring(3,1).Equals(" ") ) return this.readLine();

if ( this.verboseDebugging )
{
for(int i = 0; i < msg.Length - 1; i++)
{
Debug.Write( msg[i], "FtpClient" );
}
}

return message;
}
...全文
157 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2007-08-27
  • 打赏
  • 举报
回复
恩,ftp有被动和主动的区别
通常在文件列表停止的ftp,都需要使用被动模式来连接

看你的那个代码似乎是主动模式的代码,你需要另外去写被动模式的代码
whw123456 2007-08-27
  • 打赏
  • 举报
回复
友情帮顶·
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
to jame:
虽然不停在那里,但是老是超时也不行啊
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
行,我看看设置后能否运行正常
jamesfay 2007-08-27
  • 打赏
  • 举报
回复
2.0的话设定Socket.ReceiveTimeout 和SendTimeout

1.1以上需要放在一个线程里面做,然后判断timeout
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
没人来看看么?
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
大家帮忙看看啊
w275221545c 2007-08-27
  • 打赏
  • 举报
回复
先顶了再说
honey52570 2007-08-27
  • 打赏
  • 举报
回复
sf
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
又没人看了么?
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
to jamesfay:
你难道时候说模拟cuteftp发送命令?
kisskiki 2007-08-27
  • 打赏
  • 举报
回复
to remex:
你给的那个代码早就用过了,不知道你自己用过没有?我用的时候用它传输gif文件的时候非常慢
不知道你怎么解决这个问题,特别是一次传输至少1000个文件!

to wanghui:
啊,我现在并没有传输文件或者怎么样,我仅仅就是想获取ftp服务器上面有没有指定名称的文件夹。你说的我并不是很清楚,能否给出你的代码以帮助我理解?
REMEX1980 2007-08-27
  • 打赏
  • 举报
回复
参考这个源代码:

http://bbs.msproject.cn/default.aspx?g=posts&t=233


------------------------------------------------------------------------------------------
庆祝MSProject开源技术( http://bbs.msproject.cn/ )注册会员过1000
jamesfay 2007-08-27
  • 打赏
  • 举报
回复
你用cuteftp连接上去看看cuteftp用了哪些命令?
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真分析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比分析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 修改自己电脑的OEM信息及产品ID 本文主要讲述了如何修改自己电脑的OEM信息及产品ID,以拥有一个跟正版一样的显示效果。 文章共分为两种方法介绍了如何修改OEM信息,分别是通过软件进行修改和手动修改注册表信息。 方法一:通过软件进行修改 软件可以帮助用户快速地修改OEM信息,使用非常简单,只要选择想要修改到的厂商就可以了。 然后在高级选项中选择是否要在开始菜单中显示OEM图标和厂商信息。 通过以上步骤,用户的电脑就能拥有一个跟OEM版本一样的信息了! 方法二:手动修改注册表信息 手动修改注册表信息需要用户具备一定的计算机知识和技能。 用户需要上网搜索一张OEM logo或者从另外一台电脑上复制一张logo到自己的电脑上。 然后,用户需要找一个图标文件命名为 OEMLINKICON.ICO,作为支持信息之前的那个小图标。 接下来,用户需要修改个人信息,打开注册表编辑器,搜索到“RegisteredOwner”和“RegisteredOrganization”,这两样分别指注册者姓名和注册者单位,修改成自己的就可以了。 然后,用户需要制作“厂商、电脑型号”和“技术支持信息”(如果你的电脑有的话)。 新建一个文本文档,输入[Version]Microsoft Windows Whistler EditionWinVer=5.01[General]Manufacturer=xx(厂商)有限公司Model=xx 系列电脑[Support Information],这是“技术支持信息”的内容。 Line1=""Line2=""Line3=""Li...
内容概要:本文介绍了一项关于“风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真”的技术研究,重点探讨虚拟同步发电机(VSG)控制策略在风力发电与储能系统联合并网中的应用。通过Simulink搭建风储协同动态模型,引入VSG控制以模拟传统同步发电机的惯性与阻尼特性,有效提升系统在电网扰动下的频率稳定性与电能质量。该仿真系统可用于分析风储系统的功率协调控制、动态响应特性及并网稳定性,适用于高比例可再生能源接入背景下的新型电力系统研究与优化设计。; 适合人群:具备电力系统、自动控制或新能源等相关专业背景的研究生、科研人员,以及从事风电并网、储能系统开发与电力电子控制的工程技术人员。; 使用场景及目标:①开展风储联合并网系统的建模与动态仿真研究;②验证VSG控制策略对系统稳定性的提升效果;③用于高校教学演示、科研项目中的VSG原理分析与性能评估;④支持学术论文复现、课题创新及先进控制算法的开发与测试; 阅读建议:建议使用者熟悉Simulink建模流程及电力电子变换器控制原理,结合提供的仿真模型进行实操演练,重点关注VSG关键参数(如虚拟惯量、阻尼系数)对系统动态性能的影响,并可进一步拓展至多机并联、孤岛/并网模式切换等复杂运行工况的研究。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧