2015-05-14 37 views
3

我正在用C(而不是C++)編程一個嵌入式軟件,該軟件允許我將文件傳輸到ftp(某些特定硬件的讀數),但似乎我沒有知道如何轉移。這是我的代碼:從C中的內存上傳FTP文件

///pasive connection FTP 
    sprintf(szBuf, "PASV\r\n"); 
     FTP_SendCmd(szBuf); 

     if(!FTP_RecvResponse()) 
      return FALSE; 

     if(strncmp(szBuf , "227", 3) != 0) 
      return FALSE; 



     sprintf(szBuf, "STOR m4.html\r\n");//command that allows storage of a file in the FTP 
       FTP_SendCmd(szBuf); 
       if(!FTP_RecvResponse()) 
           return FALSE; 

       if(!FTP_RecvResponse()) 
        return FALSE; 

的事情是,STOR使用的文件名,但因爲它是定製的硬件,我需要一種方法來流從一個特定的地址字節的SDRAM(0x000-0xFFF例如),所以我想知道是否有人可以給我一些建議,創建該文件,填寫FTP中的信息?

+1

給予'STOR'的文件名,其中數據將被保存在服務器上。客戶可以從任何地方讀取數據;它只需要通過數據連接發送它(請參閱[這裏](http://stackoverflow.com/questions/9624613/proper-user-of-stor-command)瞭解它是如何工作的)。 – Diego

+0

@Diego大概你的評論正是我所期待的,非常感謝 –

+0

@Diego你應該把這個作爲回答 –

回答

2

FTP協議適用於兩個不同的連接,控制連接和數據連接。根據模式,數據連接可能由服務器(主動)或客戶端(被動)啓動。

PASV命令(表示被動傳輸)響應包含服務器正在偵聽數據連接的IP地址和端口。

STOR命令向服務器指示它必須使用哪個文件名來存儲客戶端通過數據連接發送的數據。

那麼,你缺少這裏:

  1. 解析PASV響應
  2. 打開數據連接,並在其上發送數據

有客戶端和服務器之間的其他exchages,例如在傳輸之後協調數據連接的終止。該協議在RFC 959中描述。

不知道你使用的是什麼庫,很難說它是如何實現的。

一步一步的概述可以發現here

+0

謝謝迭戈 其實我需要知道的是,STOR只是表明名字將要去的地方保存。 我自己實現的所有連接設置,所以不用擔心(現在),感謝您向我解釋的PASV回覆 –