Delphi实例分析:远程传输数据和文件.doc
文本预览下载声明
Delphi实例分析:远程传输数据和文件在Windows操作系统的平台上,WinSock是首选的网络编程接口,用于在网络上传输数据和交换信息,它构成了Windows操作系统进行网络编程的基础。对于编写网络应用程序来说,WinSock是一门非常重要的并且必须掌握的知识,虽然现在有很多的工具如FTP程序可以在网络上传输数据和文件,但是通过WinSock编程具有更大的灵活性,因为它不需要关心网络连接的细节问题。然而用WinSock编程却相当复杂,但是在Delphi中我们并不需要直接与WinSock的API函数打交道,因在Delphi中的TClientSocket组件和TServerSocket组件封装了WinSock的大部分API函数,使得对WinSock的编程大大简化。在网络通信协议的面向连接服务中,进行传输数据和交换信息之前,通信双方应该建立一条用于进行数据交换的“链路”,通信双方就是利用这个“链路”进行稳定可靠的数据传输,由于建立通信的双方都处于收发信息的状态,并且保证了数据传输的稳定性,所以在传输较大的文件时,具有较高的效率。而建立“链路”和断掉“链路”都需要消耗一定的时间,所以在传输较小文件时的效率是比较低的。 在这里我们将了解winsock如何实现远程传输数据和文件。在一个局域网内不同的计算机上分别运行服务器端程序和客户端程序。服务器端运行后就启动,socket将建立侦听状态。客户端运行后,在客户端程序中填写服务器IP地址,然后单击“连接”按钮,向服务器端发出一个建立连接的请求,如图1所示。如果通客户端程序过端口成功和服务器端连接,服务器端的状态栏就会有“已和客户端连接”的提示,并准备传输文件,如图2所示。
图1
图2
单击“发送”按钮,在弹出的对话框中选择一个准备发送的文件,然后客户端将文件的大小和其他信息等发送到服务器端,服务器端接受到文件的信息后通知客户端开始传送文件,文件的数据需要多次传递,服务器将文件全部接受并保存。系统运行如图3、图4所示:
图3
图4
服务器端程序编写:新建一个项目,并把一个TServerSocket组件放到Form1窗体上,Active设为True;端口Port设为2000,其它属性按默认值。服务器端程序代码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp, ComCtrls, DB, DBTables, XPMan; Const MP_QUERY =1; MP_REFUSE =2; MP_ACCEPT =3; MP_NEXTWILLBEDATA =4; MP_DATA =5; MP_ABORT =6; MP_OVER =7; MP_CHAT =8; MP_END =9; MP_FILEPROPERTY =0; iBYTEPERSEND=1024; type TForm1 = class(TForm) Serversocket: TServerSocket; Query1: TQuery; GroupBox1: TGroupBox; Memo1: TMemo; XPManifest1: TXPManifest; StatusBar1: TStatusBar; Button1: TButton; procedure serversocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure serversocketClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure serversocketClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure Button1Click(Sender: TObject); procedure FormCreate(S
显示全部