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

FTP客户端在使用RETR命令时添加空格,ftp,ftp-client,Ftp,Ftp Client,我正在实现FTP客户端从服务器下载文件。我按照下面的顺序使用了这个命令。我可以成功下载该文件,连接正常终止,但下载的内容与原始文件中的内容不同。当我使用记事本++打开它时,我可以看到一些额外的[NUL]字符显示,记事本将其显示为空格。我得把它处理掉 很快,我设置了PASV模式,启动了数据连接。一旦数据连接成功建立,我触发RETR命令,从服务器得到响应后,我开始从数据套接字读取数据 我在windows机器上使用GCC Cygwin执行FTP客户端 请帮帮我,伙计们。我哪里出错了 **CLIENT*

我正在实现FTP客户端从服务器下载文件。我按照下面的顺序使用了这个命令。我可以成功下载该文件,连接正常终止,但下载的内容与原始文件中的内容不同。当我使用记事本++打开它时,我可以看到一些额外的[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

这是一个“写入”系统调用(编程)错误。我没有写入接收到的缓冲区长度,而是将缓冲区的整个大小写入零。对于没有分享代码摘录,我深表歉意。这是公司的政策:(.

给我们看一些代码!+你的标题是“空格”,但问题是“[nul]”++你能帮我们上传原始文件和下载的文件吗?或者发布一个十六进制转储以显示实际的差异?请找到下面的链接。这两个文件(原始文件和下载的文件随附以供参考)很好。但是给我们看代码!很抱歉。由于公司的安全原因,我无法显示代码或代码摘录。我共享的日志是隐藏敏感数据的修改版本。如果您怀疑任何问题,您可以告诉我在哪里可以查看更多信息。我严格使用上述命令将ctrl和data socket设置为s在wireshark级别,我可以看到空间(0x20)使用filezilla客户端和客户端都在实现。filezilla客户端以某种方式删除了这些空格。我正在使用流模式下载文件。区别不在于空格,也不知道你的意思。文件已损坏,缺少一些文本。我怀疑你的代码是错误的。这与使用错误的pro无关tocol命令。您可能读错了套接字。如果您不想共享代码,我将投票结束您的问题,因为它毫无意义。