2012-12-08 67 views
1

我試圖用Qt構建一個簡單的FTP服務器,但是當我連接到它並使用Linux命令行ftp客戶端鍵入'ls'時,我得到目錄列表,但最後有一個警告:在FTP服務器中正確執行LIST命令

WARNING! 30 bare linefeeds received in ASCII mode 

這個警告是什麼意思,我該如何解決?

+0

我懷疑這個消息意味着代替文件列表(文本行跟着每個文件的CRLF),因此你的代碼會發送一堆CRLF。解析器不理解這一點,因爲它期望描述文件的文本行,而不是空行。 –

回答

2

RFC959

 
End-of-Line 

    The end-of-line sequence defines the separation of printing 
    lines. The sequence is Carriage Return, followed by Line Feed. 

您發送使用FTP應該有換行符"\r\n",這顯然你沒有所有文字。您必須修改發送給客戶端的文本,確保它具有正確的行結尾。

+1

這也適用於爲數據連接實現ASCII模式的情況。儘管與存儲文件相比稍微複雜一些,但寫入磁盤的數據應該具有平臺標準行結束符(在UNIX上是\ n,在Windows上是\ r \ n),而RETR應該都是\ r \ n,而不管服務器在哪個平臺上運行。 – goji

相關問題