设计网络文件传输

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:50:35
【设计目的】
掌握实现网络文件传输的方法,并了解TCP连接是基于字节流的。
【设计要求】
1. 实现单线程文件传输功能;
2. 在以上基础上,掌握多线程技术,在文件网络传输时,可选择单线程或多线程;
3. 加入异常控制依据,增强程序的鲁棒性(Robust);
4. 了解如何提高套接字传输的速率,以及如何加强传输的稳定性。

如果回答好的话追加100

编写代码:
首先来看服务器端,浏览文件将文件名传给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端口