如何使用原始FTP STOR命令

时间:2017-10-05 04:28:09

标签: ftp ftp-client

我正在尝试使用原始命令将文件上传到FTP服务器。是的,我知道有一些程序和软件包可以做到这一点,但我的是一个没有这些奢侈品的嵌入式应用程序。我的问题是,在成功发出所有适当的命令后,我发现服务器上不存在该文件。

这就是我的所作所为:

  1. 我在端口21(Sock1)上建立到我的FTP服务器的命令套接字连接并接收问候语(代码220)
  2. 我发送" USER myusername "并收到成功代码331
  3. 我发送" PASS mypassword "并收到成功代码230
  4. 我发送" TYPE I"并收到成功代码200
  5. 我发送" PASV"并获得成功代码227以及6个数字。
  6. 我将这些数字解码为IP地址和端口。他们看起来很合理
  7. 我成功打开了上面地址和端口(Sock2)的TCP数据套接字连接。
  8. 我发送" STOR myfilename "并收到成功代码150.
  9. 我成功将 myfilename 的内容发送给Sock2。
  10. 我关闭了Sock2,然后关闭了Sock1。
  11. 一切似乎都没问题,但服务器上没有文件。谁能告诉我我做错了什么?

    我知道服务器没错,因为我可以使用各种FTP客户端程序上传文件(使用PUT命令)。

1 个答案:

答案 0 :(得分:2)

  
      
  1. 我成功将myfilename的内容发送给Sock2。
  2.   
  3. 我关闭Sock2,然后关闭Sock1。
  4.   

传输完成后,需要关闭数据连接(sock2)以向服务器发送数据结束信号。然后,服务器将回复226响应客户端。应在关闭控制通道(sock1)之前读取此响应。如果sock1和sock2几乎在同一时间关闭,就像在这里完成一样,服务器可能会在数据通道(sock2)关闭之前注意到控制通道(sock1)的关闭,从而将数据传输视为中止。