编程ftp:如何中止文件传输?

时间:2011-06-23 16:08:15

标签: c++ windows ftp network-programming

我正在做一个小型ftp客户端,用于从ftp接收一些大文件。我在RFC中读过,ABOR命令对服务器来说非常有问题。即使在通过控制连接发送ABOR之后,我看到的几乎所有服务器都会继续发送数据。在关闭控制连接时也可能导致关闭数据传输(在70%的测试中)。在推送ABOR数据包之后,服务器只发送FIN数据包。 在一些字节停止接收并且不丢失控制连接的最佳方法是什么? FlashFXP可以在所有类型的连接延迟和服务器上执行此操作。在调查TCP流量时,我发现了标准的ftp rfc流量。

但在我的情况下,使用这种技术中止传输仍然没有成功:

1)shutdown(passive_socket,SD_BOTH)

2)closesocket(passive_socket);

3)发送(control_socket,“ABOR \ r \ n”)

4)recv(control_socket) - 停滞在这里

谢谢

2 个答案:

答案 0 :(得分:6)

“ABOR \ r \ n”命令应作为带外数据发送。如果是send() -

send(control_socket, "ABOR\r\n", 6, MSG_OOB);

recv()代码后的一段时间426转移已中止。数据连接已关闭。

如果您无法取得成功转移,以下链接会更有帮助:http://www.developer.nokia.com/Community/Discussion/showthread.php?134079-Telnet-quot-Interrupt-Process-quot-(IP)-signal-amp-Telnet-quot-Synch-quot

答案 1 :(得分:0)

关闭数据传输连接时,不应丢失控制连接,它们是两个独立的套接字。也许检查你的代码,看看控制连接被关闭的原因。