C# FTP监控和下载新文件

C# FTP监控和下载新文件,c#,sockets,ftp,C#,Sockets,Ftp,我有一个使用C#套接字的FTP监控/下载应用程序。我收到了以下错误消息: 421断开您的连接,因为您已处于非活动状态300秒 有人能解释一下吗?我搜索了一下这个,但仍然找不到一个好的解释。谢谢。它说它断开了您的连接,因为您的连接已停用300秒。这是FTP服务器上的一种常见做法,因为(与HTTP相反)FTP不是无状态的,连接保持打开状态,不做任何事情的连接可以很容易地满足服务器的连接限制 显而易见的解决方案是确保你不会在300秒内保持不活动状态。创建一个计时器,每隔一分钟左右做一些事情,比如获取当

我有一个使用C#套接字的FTP监控/下载应用程序。我收到了以下错误消息:

421断开您的连接,因为您已处于非活动状态300秒


有人能解释一下吗?我搜索了一下这个,但仍然找不到一个好的解释。谢谢。

它说它断开了您的连接,因为您的连接已停用300秒。这是FTP服务器上的一种常见做法,因为(与HTTP相反)FTP不是无状态的,连接保持打开状态,不做任何事情的连接可以很容易地满足服务器的连接限制

显而易见的解决方案是确保你不会在300秒内保持不活动状态。创建一个计时器,每隔一分钟左右做一些事情,比如获取当前目录中的文件列表或其他事情


编辑:正如Chaospanion在评论中提到的那样,也许你应该在完成连接后关闭连接,然后在再次需要时重新打开连接。

我认为这可以很好地解释这一点。服务器正在断开您的连接,因为它已5分钟未处于活动状态。问题是:什么算活动? 恐怕在FTP RFC中找不到答案,因为这可能是特定于实现的。此外,超时时间间隔可能会有所不同(可以通过FTP管理实用程序进行配置)


如果我是正确的,您只需设计应用程序来解决此约束,方法是在断开连接时重新连接,并执行任何必要的活动来重新验证应用程序的内部状态。

我们应该从此错误消息中收集哪些您无法收集到的信息?抱歉。我使用的是c#sockets,我希望类似于“您的数据套接字或命令套接字被服务器强制关闭,如果您处于下载模式,也许您应该查看您的命令套接字”。也许这回答了我的问题,但我需要一些专家的确认。不管怎样,谢谢。不用道歉,这是一次非敌意的尝试,想从你那里得到更多的细节。用文字表达情感意图是很困难的。真的,如果你的应用程序在300秒内(一辈子的代码)没有执行任何任务,你可能应该断开连接。