1
我試圖用Qt構建一個簡單的FTP服務器,但是當我連接到它並使用Linux命令行ftp客戶端鍵入'ls'時,我得到目錄列表,但最後有一個警告:在FTP服務器中正確執行LIST命令
WARNING! 30 bare linefeeds received in ASCII mode
這個警告是什麼意思,我該如何解決?
我試圖用Qt構建一個簡單的FTP服務器,但是當我連接到它並使用Linux命令行ftp客戶端鍵入'ls'時,我得到目錄列表,但最後有一個警告:在FTP服務器中正確執行LIST命令
WARNING! 30 bare linefeeds received in ASCII mode
這個警告是什麼意思,我該如何解決?
從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"
,這顯然你沒有所有文字。您必須修改發送給客戶端的文本,確保它具有正確的行結尾。
這也適用於爲數據連接實現ASCII模式的情況。儘管與存儲文件相比稍微複雜一些,但寫入磁盤的數據應該具有平臺標準行結束符(在UNIX上是\ n,在Windows上是\ r \ n),而RETR應該都是\ r \ n,而不管服務器在哪個平臺上運行。 – goji
我懷疑這個消息意味着代替文件列表(文本行跟着每個文件的CRLF),因此你的代碼會發送一堆CRLF。解析器不理解這一點,因爲它期望描述文件的文本行,而不是空行。 –