- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DELPHI网络件传输控制例程
【程序说明】
P2P(点对点)的流行产生了大批网络传输软件,这里我们要介绍的就是自己写一个简单的P2P文件传输,一方发送文件,一方接受,直到传输完整个文件。
程序运行效果如图所示。
服务器端:
图8.5.1
客户端:
图8.5.2
由服务器端负责发送文件,客户端接受。
【编程思路】
利用TCP协议连接双方,服务器端建立文件流读入待发送文件进入监听状态,客户端发送信号开始传输,服务器根据客户端发送的当前文件流传输位置按接收缓冲区大小一块一块的发送给客户端,客户端接受后再保存到接收文件流,直到整个文件流发送完毕,这里服务器端使用TIdTCPServer组件,客户端对应的使用TIdTCPClient组件。
【编程步骤】
1.启动Delphi7,建立一个标准的Application,首先我们来做服务器端,。
2.按图放置如下组件:
图8.5.3
将项目保存Server目录下,取名为Server.dpr,单元取名为U_Server.pas。
3.然后我们再来看看客户端,这里由于我们实际上是做了两个程序(服务器端和客户端),因而引入一个新的概念:项目组(Project Group),使用项目组我们很方便的同时调试两个以上的程序,也因为如此,我们上面才需要更改项目名,单元名以区分服务端和客户端,使用项目组功能首先我们找到DELPHI的IDE菜单的View项,打开Project Manager(Ctrl+Alt+F11)即可看到一个项目组管理窗口,其中已经有我们刚才建立的Server.exe了,现在我们New新建一个标准的Application项目,按照下图放置组件:
图8.5.4
将项目保存在Client目录下,取名Client.dpr,单元名U_Client.pas,现在我们可以看到,项目组窗口中多了一个Client.exe项目,其中项目名黑色加粗表示当前激活的项目。以上组件除了Tlabel组件、Tbutton组件修改标题和StatusBar1修改SimplePanel为True外全部使用默认属性,属性列表我们这里就省略了。
4.编写代码:
首先来看服务器端,浏览文件将文件名传给Edit1:
procedure Tfrm_Server.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text := OpenDialog1.FileName;
end;
然后进入传输状态:
procedure Tfrm_Server.Button2Click(Sender: TObject);
begin
if not FileExists(Edit1.Text) then //检测文件是否存在
begin
Showmessage(文件不存在,请选择文件!);
exit;
end;
//建立文件流
AFileStream := TFileStream.Create(Edit1.Text, fmOpenRead);
ProgressBar1.Max := AFileStream.Size; //初始化进度条的最大值
ProgressBar1.Position := 0;
ButtonBegin; //VCL开始状态设置
//服务器准备好连接
IdTCPServer1.DefaultPort := StrToIntDef(Edit2.Text, 9925);
if not IdTCPServer1.Active then IdTCPServer1.Active := True;
end;
其中IdTCPServer1.Active := True即让服务器端听入监听状态,结束后取消此状态,实际上我们也可以程序一运行就让他开始监听,在进入监听状态前我们首先要设置服务器监听使用的端口:
IdTCPServer1.DefaultPort := StrToIntDef(Edit2.Text, 9925);
这句就设置了端口为Edit2的值,转换文本到数字失败就使用默认9925端口。
ButtonBegin是我们自己写的一个过程,目的是改变一些按钮的可操作状态,例如传输过程中不允许在选择文件等:
procedure Tfrm_Server.ButtonBegin;
begin //VCL开始状态设置
Button1.Enabled := False; //不可浏览
Button2.Enabled := False; //不可发送
Button3.Enabled := True; //可以取消
Button4.Enabled := False; //不可退出
end;
这种方法
您可能关注的文档
- CRM安卓andoid版简介-广州聚邦智能科技有限公司.doc
- CRM系统-客户系管理软件.doc
- CRM软件测评使评价报告.doc
- crocs卡骆驰会化媒体营销方案.doc
- CROSBY安全技术特点.doc
- cross-flw fans and their application to aircraft propulsion and flow control.doc
- CRPWJFQR2010-006办公用品管理制度.doc
- cs-t240全动生化分析仪和bs-300全自动生化分析仪价格.docx
- CSA1-5安全产投入及资金使用管理办法.doc
- cs1101(计机科学).docx
- DEM建立与应用基于DEM的ArcGIS水文分析.doc
- DEM坡面地形因提取与分析.doc
- descripton of supplier background.doc
- depeonq危_化学品从业单位认证上报资料目录.doc
- DeviceNe现场总线协议讲解.doc
- Developig safe therapies from human pluripotent stem cells.doc
- deygcuk卫_部三级综合医院评审标准.doc
- DE_HR Scpe questionnaire (Chi)_260601KL.doc
- dfdffdh实室规章制度ykyf.doc
- dflgbty我_大学职业规划书.doc
文档评论(0)