FTP:何时在启动文件传输后发送代码226?

时间:2014-03-20 08:30:11

标签: java sockets ftp

从FTP服务器的角度来看,如果客户端通过RETR命令请求文件,则服务器通过指定端口创建到客户端的数据连接(套接字),并通过写入输出流来启动传输。对服务器进行编码(JAVA),使得在套接字中完成写入后,刷新输出流然后关闭套接字。在此之后,代码“226”被发送到控制信道中的客户端。

由于连接是在一个非常慢的网络上,226消息在实际数据传输完成之前到达。这是一个棘手的情况,客户端代码无法更改,服务器必须确保在客户端收到数据后发送226.

我尝试在互联网上搜索并得到一些输入,但不确定哪一个是标准。 1.使用setSoLinger()方法打开SO_LINGER并设置超时。 2.在将每个字节写入套接字后引入延迟(性能将受到快速连接的影响)。

除上述之外是否还有其他选择可以解决问题。关于在Linux / Solaris / Windows FTP服务器中发送226所遵循的标准的任何想法。

我可以在stackoverflow中看到类似的线程“何时应该从FTP服务器发送226?” ,但找不到与我的问题相关的信息。

非常感谢帮助...谢谢

1 个答案:

答案 0 :(得分:1)

不要随意延迟,我唯一能想到的就是你构建一个代理层来拦截确认代码,检查文件,并将代码重新路由到应用程序,类似于telerik fiddler作为一个应用程序。

我在向服务器发送消息时使用JMS确认模式时使用的相同概念,我必须实现相同的。

祝你好运我的朋友