我正在实施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
答案 0 :(得分:0)
这是"写"系统调用(编程)错误。我没有写入接收到的缓冲区长度,而是将整个缓冲区的大小写成零。我真诚地为不共享代码摘录而道歉。这是公司的政策:(。