FTP客户端在使用RETR命令时添加空格

时间:2016-09-21 02:07:09

标签: ftp ftp-client

我正在实施FTP客户端以从服务器下载文件。我使用了以下序列中的命令。我可以成功下载文件并且连接已正常终止,但下载的内容与原始文件中的内容不同。当我用notepad ++打开它时,我可以看到一些额外的[NUL]字符,而记事本则将其显示为空格。我必须摆脱这个。

很快,我设置了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 (Tim.Kosse@gmx.de)
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

1 个答案:

答案 0 :(得分:0)

这是"写"系统调用(编程)错误。我没有写入接收到的缓冲区长度,而是将整个缓冲区的大小写成零。我真诚地为不共享代码摘录而道歉。这是公司的政策:(。