Java 关闭FTP会话时,在断开连接之前注销(退出)有什么好处吗?

Java 关闭FTP会话时,在断开连接之前注销(退出)有什么好处吗?,java,ftp,Java,Ftp,我使用的是ApacheCommonsFTPClient,因此这将分别是logout和disconnect方法。我理解,如果您希望以不同用户身份在同一连接上重新登录,则注销非常有用;这里不是这样 ftp4j文档提到,一些服务器根本不实现注销,因此我猜这是多余的,但我想知道,如果不小心断开连接,可能会在服务器上留下悬空会话。通常只要没有数据连接仍然打开,就关闭连接不是问题。但是不要低估程序员滥用特性的创造力。我曾经使用过一个FTP服务器,它在登录时启动一个事务,在退出时提交。如果您只是关闭了连接而不

我使用的是ApacheCommonsFTPClient,因此这将分别是logout和disconnect方法。我理解,如果您希望以不同用户身份在同一连接上重新登录,则注销非常有用;这里不是这样


ftp4j文档提到,一些服务器根本不实现注销,因此我猜这是多余的,但我想知道,如果不小心断开连接,可能会在服务器上留下悬空会话。

通常只要没有数据连接仍然打开,就关闭连接不是问题。但是不要低估程序员滥用特性的创造力。我曾经使用过一个FTP服务器,它在登录时启动一个事务,在退出时提交。如果您只是关闭了连接而不是退出,则会执行回滚,并且所有上载的文件都会丢失


除此之外,退出不能用于注销和再次登录,因为服务器将在退出后关闭控制连接。因此,您必须重新连接。

通常,只要没有数据连接仍然打开,就可以关闭连接。但是不要低估程序员滥用特性的创造力。我曾经使用过一个FTP服务器,它在登录时启动一个事务,在退出时提交。如果您只是关闭了连接而不是退出,则会执行回滚,并且所有上载的文件都会丢失


除此之外,退出不能用于注销和再次登录,因为服务器将在退出后关闭控制连接。因此您必须重新连接。

可能会避免服务器端出现错误。这很容易,为什么不去做呢。@Yetti99-在主线的情况下很容易,但它会让错误处理变得更丑陋。不要只是在finally或等效程序中调用disconnect,您需要跟踪您是否成功登录,并确保如果注销抛出,您仍然调用disconnect,并担心注销返回值的错误到底意味着什么。这些都不是特别困难,只是比较混乱。可能会避免服务器端的错误。这很容易,为什么不去做呢。@Yetti99-在主线的情况下很容易,但它会让错误处理变得更丑陋。不要只是在finally或等效程序中调用disconnect,您需要跟踪您是否成功登录,并确保如果注销抛出,您仍然调用disconnect,并担心注销返回值的错误到底意味着什么。这些都不是特别困难,只是一团糟。