使用我编写的FTP客户端,我有时会在上传完成后收到来自FileZilla服务器的226 Transfer OK
消息,而有时我永远不会收到任何东西。这并不是因为客户端在收到226 Transfer OK
之前断开了连接,因为我可以在服务器上看到FileZilla从未发送过它。
我需要知道服务器何时接收到完整的上载,因为在关闭连接之前,我不知道整个文件是否已经到达网络。
有什么可能导致226 Transfer OK
消息不可靠的原因吗?究竟是什么触发了它的发送?
发布于 2013-03-12 04:59:05
我自己想出来的!我发现正是客户机在数据套接字端口上发送的FIN/ACK
消息促使FileZilla服务器在控制套接字端口上发送226 Transfer OK
消息(在数据套接字端口上发送自己的FIN/ACK
作为响应之后)。
在WinRT中,关闭数据套接字会导致客户端发送FIN/ACK
消息。
因此,关闭FTP连接的正确顺序是(在发送最后一个数据包之后)关闭数据套接字,等待控制套接字上的226 Transfer OK
消息,然后在控制套接字上发送QUIT
消息,然后关闭控制套接字。
https://stackoverflow.com/questions/15343022
复制相似问题