No.3
第12卷第3期 +,,。 V01.12
20lo年3月 鬣钎雾喾 Mar.2010
doi:lO.3969/j.issn.1563--4795.2010.03.018
谢永悠
(西南交通大学信息科学与技术学院,四川 成都610031)
摘 要:’rFTP(简单文件传送协议)是TCP/TP协议族中用来在客户机与服务器之间进行简单
文件传输的协议。文中给出了在visualC++6.0开发平台上,用C语言按照聊协议在服务器
跟多客户端之间进行文件传榆的实现方法。该方法可以传输超过32MB的文件。
关键词:Tnm:server;client;超时重传
0引言 1 系统所要解决的问题
利用TFrP简单文件传输协议可以实现Ⅱ’rP 在唧文件的传输过程中,通常都要求有一
server与Tn’Pclient之间的文件传输.包括多客定的容错能力。大部分的错误都会导致连接中
户的下载和上传请求。 断。假如错误由一个错误的数据包引起.则这个
如果客户端发送的是下载请求,那么,服务 包将不被确认,也不会被重新发送,因此,另一
器将根据客户端发过来的报文。解析出文件的路 方将无法接收到。如果错误包丢失,则将使用超
径和文件名,并且根据解析出来的文件名,开始 时机制。一般的错误主要是由三种情况引起:一
读文件并构造报文。然后再经过获取客户端发过 是不能满足请求;二是收到的数据包内容错误,
来的端口号,把DATA报文发送给客户端;如果而这种错误又不能由延时或重发解释;三是对需
客户端发送的是上传请求,那么,服务器端也必 要资源的访问丢失(如硬盘满)。
须解析出文件名及要保存的路径。若满足条件, 椰只在一种情况下不中断连接,这种情况
则发送ACK给客户端以确认已经接受客户端的请 是源端口不正确,在这种情况下。指示错误的包
求,然后等待客户的DATA报文。客户端接收会被发送到源机。事实上,Ⅱ耶协议的限制很
ACK后,就可开始发送数据报文。服务器开始解 多.这些都是为了实现起来比较方便而进行的。
析报文。并将其写到指定的路径及文件中。
任何传输请求都来自一个读取或写入文件的 2系统实现
请求,这个请求也是连接请求。如果服务器批准
2.1输入模块
此请求,则服务器将打开连接,数据以定长512
字节传输。每个数据包一般都含有一块数据,服 输入模块可实现输入命令的接收、判断和容
务器发出下一个数据包以前.必须得到客户对上 错处理,负责接收客户的输入信息并解析命令。
一个数据包的确认。如果一个数据包的大小小于
512字节。则表示传输结束。如果数据包在传输 供其他模块读取。
过程中丢失.则发出方会在超时后重新传输最后
一个未被确认的数据包。通信的双方都是数据的 接收客户的输入。再把客户输入的命令、文件
发出者与接收者,其中一方传输数据接收应答, 名、主机的ip地址保存到结构体中。其实现代码
另一方发出应答接收数据。 如下:
struct p存放最终输入
typedefinput
命令的结构体木/
收稿日期:2009—10—21