曹婧华,赵 飞,冉彦中
(1.吉林大学和平校区计算机教研室,吉林长春 130062;2.吉林大学和平校区军需科技学院,吉林长春 130062)
局域网文件传输的Delphi编程实现
曹婧华1,赵 飞2,冉彦中1
(1.吉林大学和平校区计算机教研室,吉林长春 130062;2.吉林大学和平校区军需科技学院,吉林长春 130062)
在研发开放式计算机机房自动化系统过程中,笔者采用客户端-服务器(C/S)模式,基于TCP/IP协议,以Delphi7.0作为开发平台,应用Dephi7.0的TIdTCPServer组件和TIdTCPClient组件对局域网文件传输进行有益尝试,实现了按缓冲区大小划分的文件流分段传输方式的服务器-客户端局域网文件传输。机房实验结果表明,本文算法简单易用,具有推广价值。
局域网;文件流;TIdTCPServer组件;TIdTCPClient组件
通常机房的文件传输是在IE浏览器的地址栏用文件传输协议ftp实现的,ftp是TCP/IP[1]模型的应用层协议,该协议运行在传输层的TCP协议之上的,这种方法使用起来很不方便而且文件的传输速度较慢。在细致研究了TCP/IP协议以及Delphi710的线程通信组件[2]TIdTCPServer和TIdTCPClient之后,本文直接基于TCP/IP模型传输层的TCP协议,设计并实现了基于点对点的[3]、面向连接的、可靠[4]服务器至客户端的文件传输。
TCP/IP参考模型分为四层:应用层 (Application Layer)、传输层 (Transport Layer)、网络层 (Internet Lay2 er)、链路层 (Link Layer)。应用程序处在应用层,应用层下面分别是传输层、网络层、链路层。传输层通过两种核心协议TCP和UDP为应用层提供会话和数据报通信服务,其中TCP协议是一种面向连接的可靠传输协议,其工作原理是两个进程在利用TCP协议通信前必须先建立TCP协议连接,本文是基于TCP协议的面向连接的通信方式。
本文的局域网数据传输系统通过Delphi 710的网络通信组件INDY建立客户端与管理端之间的TCP连接。主要用到了IdTCPServer和 IdTCPClient两个组件,其中IdTCPClient封装了一个包括Socket支持的完整的TCP客户端程序,IdTCPServer封装了一个完整的多线程TCP服务器端程序。它使用一个或者多个线程来接收客户端的连接。
利用TCP协议连接服务器和客户机之后,服务器端读入待发送文件建立文件流,进入监听状态,接到客户端发送信号后开始传输。服务器根据客户端发送的当前文件流传输位置按接收缓冲区大小对预传输文件分块发送给客户端,客户端接收后保存到接收文件流,直到整个文件发送完毕。其具体设计按服务器和客户端进行模块划分并进行编码实现,具体的功能界面、代码设计及注释文档如下。
客户端界面图如图1。在客户端窗体上放置一个TIdTCPClient组件,用于和服务器端的连接。一个文件保存对话框,用于保存从服务器传来的文件。两个文本框,一个文本框用于输入服务器的地址,另一个文本框用于设置组件的端口号。一个数据接收按钮,其单击事件代码实现向服务器提交发送数据请求并接收由服务器发送的数据。一个状态按钮,表示文件传输情况。
Client.Button1单击事件的具体代码及其功能注释如下:
图1 客户端界面图
服务器端界面图如图2。在服务器端窗体上放置了一个IdTCPServer组件,用于监听客户端的发送请求。一个文件打开对话框,用于打开要传的文件。两个文本框,一个用于输入要传文件在服务器上的地址,另一个用于设置组件的端口号。一个传输按钮开始向客户端发送数据,一个状态条表示文件传输的情况。
图2 服务器端界面图
机房管理中,数据传输是一个非常实际和常遇问题。在长期的应用实践过程中发现基于TCP的Sock2 et[5-10]通信保证了网络通信的准确性和及时性。Delphi是一种优秀的面向对象编程语言,由于其具有的可移植性、多线程、简单性、安全性等优点而广泛应用于网络开发环境中。本文的主要功能由Delphi的TIdTCPServer和TIdTCPClient实现,通过编程,增强了对TCP/IP协议的理解,认识了套接字的编程思想,实现了文件流的分段传输,解决了局域网C/S模式下的数据传输。
[1]陈忠菊.基于和协议的通信编程Delphi TCP/IP网络与通信[J].电脑编程技巧与维护,2009(2).
[2]冯秀彦.基于Delphi Socket组件的局域网通信[J].石家庄职业技术学院学报,2008(4):33-34.
[3]白羽,洪飞.基于P2P SIP协议的即时通信系统[J].计算机系统应用,2009(2):14-17.
[4]张岩.Delphi下的点对点聊天工具编程[J].电脑知识与技术,2009(5):1239.
[5]罗亚非.基于TCP的Socket多线程通信[J].电脑知识与技术,2009(3):22-24.
[6]李新良,罗戈夕.用Socket的编程机制实现网上交谈[J].电脑知识与技术,2006(10):29-30.
[7]王静,曲凤娟.基于Socket的多用户并发通信的设计[J].福建电脑,2007(3):164.
[8]陈小艳.用Java实现多线程Socket通信[J].湖北广播电视大学学报,2008(1):157-158.
[9]徐震.基于TCP/IP的半导体封装设备之间数据通信的研究[D].广州:广东工业大学,2007.
[10]何进,谢松巍.基于Socket的TCP/IP网络通讯模式研究[J].计算机应用研究,2001(8).
The Realization of Delphi Programming for File Transfer in Local Area Network
CAO Jing-hua1,ZHAO Fei2,RAN Yan-zhong1
(1.Department of Computer,Heping Campus Jilin University,Changchun 130062,China;2.College of Quartermaster Technology,Changchun 130062,China)
In the process of developing automation systemfor open computer lab,this paper used client-server(C/S)mode based on TCP/IP protocol.It took Delphi7.0 as a development platform and attempted to transfer files in local area network(LAN)using the TIdTCPServer components and TIdTCPClient components of Dephi7.0,and finally realized the transfer of files in LAN based on C/S mode.The experimental results showed that this algorithm is easy to use,and of popularization value.
local area network;file stream;TIdTCPServer components;TIdTCPClient components
TP312
A
1008-178X(2011)01-0040-03
2010-12-19
吉林省教育厅科技计划项目 (吉教科合字 [2006J75]);吉林大学青年科研基金项目 (091167)。
曹婧华 (1978-),女,吉林公主岭人,吉林大学和平校区计算机教研室讲师,硕士,从事计算机网络研究。