【程序说明】
P2P(点对点)的流行产生了大批网络传输软件,这里我们要介绍的就是自己写一个简单的P2P文件传输,一方发送文件,一方接受,直到传输完整个文件。
程序运行效果如图所示。
服务器端:
客户端:
由服务器端负责发送文件,客户端接受。
【编程思路】
利用TCP协议连接双方,服务器端建立文件流读入待发送文件进入监听状态,客户端发送信号开始传输,服务器根据客户端发送的当前文件流传输位置按接收缓冲区大小一块一块的发送给客户端,客户端接受后再保存到接收文件流,直到整个文件流发送完毕,这里服务器端使用TIdTCPServer组件,客户端对应的使用TIdTCPClient组件。
【编程步骤】
,建立一个标准的Application,首先我们来做服务器端,。
:
将项目保存Server目录下,,。
,这里由于我们实际上是做了两个程序(服务器端和客户端),因而引入一个新的概念:项目组(Project Group),使用项目组我们很方便的同时调试两个以上的程序,也因为如此,我们上面才需要更改项目名,单元名以区分服务端和客户端,使用项目组功能首先我们找到DELPHI的IDE菜单的View项,打开Project Manager(Ctrl+Alt+F11)即可看到一个项目组管理窗口,,现在我们New新建一个标准的Application项目,按照下图放置组件:
将项目保存在Client目录下,,,现在我们可以看到,,其中项目名黑色加粗表示当前激活的项目。以上组件除了Tlabel组件、Tbutton组件修改标题和StatusBar1修改SimplePanel为True外全部使用默认属性,属性列表我们这里就省略了。
:
首先来看服务器端,浏览文件将文件名传给Edit1:
procedure (Sender: TObject);
begin
if then
:= ;
end;
然后进入传输状态:
procedure (Sender: TObject);
begin
if not FileExists() then //检测文件是否存在
begin
Showmessage('文件不存在,请选择文件!');
exit;
end;
//建立文件流
AFileStream := (, fmOpenRead);
:= ; //初始化进度条的最大值
:= 0;
ButtonBegin; //VCL开始状态设置
//服务器准备好连接
:= StrToIntDef(, 9925);
if not then := True;
end;
:= True即让服务器端听入监听状态,结束后取消此状态,实际上我们也可以程序一运行就让他开始监听,在进入监听状态前我们首先要设置服务器监听使用的端口:
:= StrToIntDef(, 9925);
这句就设置了端口为Edit2的值,转换文本到数字失败就使用默认9925端口。
ButtonBegin是我们自己写的一个过程,目的是改变一些按钮的可操作状态,例如传输过程中不允许在选择文件等:
procedure ;
begin //VCL开始状态设置
:= False; //不可浏览
:= False; //不可发送
:= True; //可以取消
:= Fal
DELPHI网络文件传输控制例程 来自淘豆网m.daumloan.com转载请标明出处.