`
buliedian
  • 浏览: 1237777 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于FTP程序接收文件的问题

阅读更多

写有一个ftp值守程序,收取FTP目录中的文件。

发现一个很怪的问题:总是接收失败。从服务器发送的字节数看。1440和2880长度是常见的。我令文件的长度恰好是1440或者2880的整数倍,均是失败的多。后不断调试发现。当文件的体积是1440或者2880加上1440的一半稍多时。文件的体积恰好。每次命令发出,都能一次成功接收。比如我现在用的文件体积是2880+1440/2+10=3610,测试良久。成功率99%。而如果长度是1440或者2880的整数倍,结果反过来是:失败率是99%。不知为何。对tcp程序不是很了解。我用的是clientsocket/bcb直接用ftp命令下载文件。在此笔记一下,有时间时再归置归置。

之前:

220 Microsoft FTP Service (win2k3)
>>>>user ***

331 Password required for ***.
>>>>pass ***

230 User*** logged in.
>>>>cwd db/pd

250 CWD command successful.
>>>>type A
200 Type set to A.
>>>>PASV
227 Entering Passive Mode (*,*,*,*,14,95).
>>>>NLST
125 Data connection already open; Transfer starting.
2010_12_07_14_34_11.txt

+++2010_12_07_14_34_11.txt

226 Transfer complete.
>>>>type I
200 Type set to I.
>>>>PASV
227 Entering Passive Mode (*,*,*,*,16,97).
>>>>SIZE 2010_12_07_14_34_11.txt

213 5760
>>>>RETR 2010_12_07_14_34_11.txt

125 Data connection already open; Transfer starting.
接收到: 2880byte;
接收到: 1440byte;
226 Transfer complete.
--!!!ftp的SIZE指令报告的字节数还未传完ftp就报告传输结束,这里强制关闭,待下次处理
>>>>quit
221
>>>>disconnect,Close socket.end.

之后:

220 Microsoft FTP Service (win2k3)
>>>>user ***

331 Password required for ***.
>>>>pass ***

230 User*** logged in.
>>>>cwd db/pd

250 CWD command successful.
>>>>type A
200 Type set to A.
>>>>PASV
227 Entering Passive Mode (*,*,*,*,14,95).
>>>>NLST
125 Data connection already open; Transfer starting.
2010_12_07_14_34_11.txt

+++2010_12_07_14_34_11.txt

226 Transfer complete.
>>>>type I
200 Type set to I.
>>>>PASV
227 Entering Passive Mode (*,*,*,*,16,97).
>>>>SIZE 2010_12_07_14_34_11.txt

213 5760
>>>>RETR 2010_12_07_14_34_11.txt

125 Data connection already open; Transfer starting.
接收到: 2880byte;
接收到: 1440byte;
接收到: 2880byte;
接收到: 20byte;
226 Transfer complete.
--end trans file
>>>>DELE 2010_12_07_14_17_21.4EC
250 DELE command successful.
>>>>quit
221
>>>>disconnect,Close socket.end.
开始处理

--------------------------------------------------------------------------------------------

如果要说不是数据长度的缘故,你从3610换成2880马上就是不行。错误可以重现。

出现该错误,有时能重复N次可接收下来,但也有始终循环无法停止的情况。

我有另外一个程序,接收文件体积在3100-3900之间,运行数月,无此问题。但如调大调小均也出现此问题。

分享到:
评论

相关推荐

    FTP下载文件的示例程序

    在这个基于MFC(Microsoft Foundation Classes)的示例程序中,开发者利用VS2015(Visual Studio 2015)作为集成开发环境,创建了一个能够实现FTP文件下载功能的应用程序。 MFC是微软提供的C++类库,它封装了...

    FTP文件传输程序

    在VC++中实现FTP程序还需要注意错误处理,包括网络连接错误、文件操作错误、FTP命令执行错误等。通过异常处理机制,确保程序在遇到问题时能够优雅地处理并给出反馈。 最后,项目的源代码文件列表"FileTransfers...

    基于FTP的文件传输程序

    基于FTP的文件传输程序设计通常涉及到以下几个核心知识点: 1. FTP协议基础:FTP使用TCP作为传输层协议,通过建立两个独立的连接来完成文件传输,分别是控制连接和数据连接。控制连接用于发送命令和接收响应,数据...

    ftp文件下载程序

    FTP(File Transfer Protocol)文件下载程序是用于在互联网上从FTP服务器检索文件的应用。VB(Visual Basic)是一种流行的Microsoft开发的编程语言,以其直观的事件驱动编程模型而著名。在这个项目中,VB被用来创建...

    FTP程序实现 C++

    在FTP程序中,我们需要将数据从本地文件流复制到网络连接,或反之。 7. **字符串处理与解析**:FTP命令和响应通常是文本格式,需要进行字符串处理和解析。C++中的`std::string`、`std::stringstream`和正则表达式库...

    一个FTP文件下载程序

    - www.pudn.com.txt可能是FTP程序中用于存储FTP服务器信息(如URL、用户名、密码)的配置文件,或者是关于如何使用该程序的文档。 5. FTP客户端软件: - 知名的FTP客户端软件有FileZilla、WinSCP、Cyberduck等,...

    java版FTP文件管理程序

    在这个FTP程序中,可能有专门的包或目录用于存放与FTP相关的类,如`FTPClient`、`FTPConnection`等。 5. **使用说明**:程序附带的详细使用说明可能涵盖了如何配置FTP服务器信息、如何连接服务器、如何执行文件操作...

    Ftp.rar_ftp_ftp 文件传输_ftp文件传输_文件传输界面_界面端传输

    4. **二进制和文本模式**:FTP支持两种文件传输模式,二进制模式(用于图像、程序等非文本文件)和文本模式(用于处理文本文件的换行符转换)。 5. **FTP命令**:FTP协议定义了一系列的命令,如`USER`、`PASS`用于...

    FTP文件传输客户端程序

    FTP文件传输客户端程序是计算机网络中用于在不同的主机之间交换文件的一种协议实现。在本案例中,我们讨论的是一个基于Indy组件库和Delphi 7.0开发的VCL Skin 2.6 for D7的FTP客户端应用程序。Indy(Internet Direct...

    FTP协议实现程序

    在本教程中,我们将探讨如何实现一个简单的FTP程序,特别是服务端的搭建。这个过程通常涉及以下几个核心概念: 1. **FTP协议基础**:FTP基于TCP/IP协议族,通过两个并行的连接来工作——控制连接和数据连接。控制...

    JAVA获取FTP文件列表

    ### JAVA获取FTP文件列表知识点详解 #### 一、概述 在现代软件开发中,FTP(File Transfer Protocol)是一种广泛使用的协议,用于在网络上进行文件传输。本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`...

    c++实现ftp list所有文件与目录 & ftp down所有文件

    在本文中,我们将深入探讨如何使用C++编程语言结合libcurl库来实现FTP(File Transfer Protocol)服务的两个主要功能:列出所有文件和目录,并下载所有文件。FTP是一种广泛使用的互联网协议,用于在服务器和客户端...

    FTP文件传输的VC程序

    在VC(Visual C++)环境中开发FTP文件传输程序,我们可以利用C++的库,如Winsock,来实现这一功能。下面我们将深入探讨FTP协议的基本原理、VC程序设计中的关键点以及如何使用Winsock库来实现FTP文件传输。 FTP协议...

    完整的FTP程序源码

    FTP程序的核心功能包括连接到FTP服务器、登录、列出目录、上传和下载文件等。在VB中实现这些功能,通常会涉及到以下几个关键知识点: 1. **网络通信基础**:首先,你需要理解TCP/IP协议和网络通信的基本原理,因为...

    FTP服务程序设计

    FTP(File Transfer Protocol)服务程序设计是网络编程领域的一个重要课题,主要涉及如何通过C#编程语言和.NET框架创建一个能够实现文件传输的应用程序。在本文中,我们将深入探讨FTP服务程序设计的关键概念、技术...

    一个简单的ftp服务器程序代码

    FTP服务器程序的核心功能包括用户认证、目录浏览、文件上传与下载。在Java中,我们可以利用Apache的Commons Net库来实现FTP服务器的功能。这个库提供了丰富的类和方法,方便开发者构建FTP服务器。 首先,我们需要...

    FTP多线程切割文件传输

    - `PhotoPlatform.cfg`:可能是项目配置文件,包含关于程序设置的信息。 - `UnitPhotoPlatform.dcu`、`UnitFtpPhotoData.dcu`、`UnitPhotoData.dcu`、`UnitMultiThread.dcu`:这些都是Delphi编译后的单元文件,它们...

    linux 下FTP程序的实现

    - `ftp_c.c`文件将包含客户端的逻辑,如建立与服务器的连接、发送FTP命令、接收文件等。客户端也需要使用套接字API来创建套接字,并通过connect函数连接到服务器。 - 编译`ftp_c.c`,同样使用`gcc`,命令类似:`...

    C++ 简单的Ftp文件传输

    FTP服务器(FTPServer)是接收并处理客户端请求的程序,而FTP客户端(FileClient)则是发送文件传输请求的程序。在C++中,实现FTP功能通常涉及以下几个关键知识点: 1. **Socket编程**:FTP通信基于TCP/IP协议,...

    FTP-client_tcp_ftp_网络程序_简单的ftp程序_

    标题中的“FTP-client_tcp_ftp_网络程序_简单的ftp程序_”表明这是一个关于FTP客户端的程序,使用TCP协议实现,并且设计简洁。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而TCP(Transmission...

Global site tag (gtag.js) - Google Analytics