【问题标题】:How to cancel an FTP upload that is connected through sockets?如何取消通过套接字连接的 FTP 上传?
【发布时间】:2015-09-12 03:26:16
【问题描述】:

我正在使用套接字将文件上传到服务器。

我正在使用STOR 命令上传。我应该关闭连接以取消上传还是应该致电QUIT

    public static const STOR:String     = "STOR";
    public static const BINARY:String   = "TYPE I";
    public static const ASCII:String    = "TYPE A";
    public static const USER:String     = "USER";
    public static const PASS:String     = "PASS";
    public static const QUIT:String     = "QUIT";
    public static const CWD:String      = "CWD";
    public static const PWD:String      = "PWD";
    public static const LIST:String     = "LIST";
    public static const PASV:String     = "PASV";
    public static const RETR:String     = "RETR";
    public static const CD:String       = "CWD";

及相关:

关闭套接字会导致某人必须重新登录吗?有注销命令吗?

【问题讨论】:

  • 我对 FTP 的记忆被拍了,所以我不能自信地写一个答案,但万一其他人不能给你答案我可以告诉你,一般来说,当我写完 FTP 脚本时,我记得我已启动 2 个套接字,1 个用于文件传输,1 个用于登录并读取服务器响应等的“控制”套接字。当服务器准备好接收时,我在新线程上启动了一个新套接字以进行传输并发送NOOPs 通过控制套接字保持控制连接处于活动状态
  • 就像我说的那样,我上面的评论不是一个答案,但应该为你指明正确的方向 - 这是我不久前问的一个问题(它适用于 python,但你可能会从中得到一些关于结构的想法它)stackoverflow.com/questions/19928061/…
  • @leemo 这很有帮助。我使用的库在我上传时创建了一个套接字。然后在发送数据后将其关闭。然后我可以随意上传另一个文件。所以第一个登录连接必须仍然处于活动状态。所以听起来我可能需要发送 noops 以保持原始打开,然后关闭连接会将我注销。
  • 是的,我认为这是基本想法,我在保持 Control 连接活动时遇到了很多麻烦,但这主要与 python FTP 库有关,而不是真正为我想要做的事情而设计。

标签: sockets ftp


【解决方案1】:

在普通(默认)流 FTP 模式下,除了关闭数据连接之外,没有其他方法可以终止传输。无需关闭控制连接,也无需调用QUIT,无需重新登录。

上传时,服务器甚至不知道出了什么问题。它将假设上传正确完成(因为关闭数据连接是在流模式下指示完成上传的唯一方法)。因此,如果您认为在服务器上保留不完整的文件不合适,您可以考虑明确删除(部分)上传的文件。


其他 FTP 传输模式(块和压缩)确实有办法明确中止传输。但根据我的经验,这些模式很少使用。
Which FTP transfer modes are widely used?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 2015-03-05
    • 2014-12-22
    • 2011-06-25
    • 2013-07-12
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多