2016-09-21 367 views
-1

我正在實現FTP客戶端從服務器下載文件。我在下面的序列中使用了該命令。我可以成功下載該文件,但連接已正常結束,但下載的內容與原始文件中的內容不同。當我用notepad ++打開它時,我可以看到一些額外的[NUL]字符,記事本則將它顯示爲空格。我必須擺脫這一點。FTP客戶端在使用RETR命令時添加空格

不久,我設置了PASV模式,我啓動了數據連接。一旦數據連接成功建立,我就會觸發RETR命令,並且在從服務器獲得響應之後,我開始從數據套接字讀取數據。

我在Windows機器上使用GCC Cygwin來執行FTP客戶端。

請幫我一把。我哪裏錯了。?

**CLIENT**: 
CONNECTION ESTABLISHMENT 

********************************** 
CONNECTING TO [abc.def.ghi.jkl]:[21] 
Client connected to [abc.def.ghi.jkl] successfully.. 

**SERVER**: 
========= 
220-FileZilla Server version 0.9.41 beta 
220-written by Tim Kosse ([email protected]) 
220 Please visit http://sourceforge.net/projects/filezilla/ 

********************************** 

**CLIENT**: 
========= 
Sending Username: abc 

FTP COMMAND: USER abc 

**SERVER**: 
========= 
331 Password required for abc 

********************************** 

**CLIENT**: 
========= 
Sending Password: ****** 

FTP COMMAND: PASS ****** 

**SERVER**: 
========= 
230 Logged on 

********************************** 

**CLIENT**: 
========= 
CHANGING WORKING DIRECTORY TO [/test] 

FTP COMMAND: CWD /test 

**SERVER**: 
========= 
250 CWD successful. "/test" is current directory. 


********************************** 

**CLIENT**: 
========= 
SET TYPE-A MODE 

FTP COMMAND: TYPE A 

**SERVER**: 
========= 
200 Type set to A 

********************************** 

**CLIENT**: 
========= 
SET PASV MODE 

FTP COMMAND: PASV 

**SERVER**: 
========= 
227 Entering Passive Mode (abc,def,ghi,jkl,4,62) 

********************************** 
CONNECTING TO [abc.def.ghi.jkl]:[1086] 
Client connected to [abc.def.ghi.jkl] successfully.. 

********************************** 

**CLIENT**: 
========= 
RETRIEVE FILE: [abc.txt] 

FTP COMMAND: RETR abc.txt 

**SERVER**: 
========= 
150 Connection accepted 

******************************************* 

DOWNLOADING FILE.. 
FILE DOWNLOAD COMPLETE [D:\FTP_Client/abc.txt] 

******************************************* 

**SERVER**: 
========= 
226 Transfer OK 

********************************** 

**CLIENT**: 
========= 
LOGGING OUT.. 

FTP COMMAND: QUIT 

**SERVER**: 
========= 
221 Goodbye 
+0

向我們展示一些代碼!+您的標題說「空格」,但問題說「[nul]」。+您可以上傳原始文件和下載的文件給我們嗎?十六進制轉儲顯示實際的區別嗎? –

+0

請找下面的鏈接。 兩者(附供您參考原始和下載的文件)文件 https://drive.google.com/drive/folders/0B_KvTQ5pT5z6Yy14NHFMVkJ0T0U – Vasanth

+0

好。但向我們展示代碼! –

回答

0

這是一個「寫」系統調用(編程)錯誤。寫入接收的緩衝區長度,而不是寫入成員爲零的緩衝區的整個大小。對於不分享代碼摘錄,我表示誠摯的歉意。這是公司的政策:(。