计算机专业毕业设计论文

上传人:沈*** 文档编号:83954273 上传时间:2022-05-02 格式:DOC 页数:50 大小:517.50KB
收藏 版权申诉 举报 下载
计算机专业毕业设计论文_第1页
第1页 / 共50页
计算机专业毕业设计论文_第2页
第2页 / 共50页
计算机专业毕业设计论文_第3页
第3页 / 共50页
资源描述:

《计算机专业毕业设计论文》由会员分享,可在线阅读,更多相关《计算机专业毕业设计论文(50页珍藏版)》请在装配图网上搜索。

1、2009年度本科生毕业论文设计局域网即时通信软件的设计与开发院 系: 工学院计算机科学与技术系 专 业: 计算机科学与技术 年 级: 2005级 学生某某: 李仲霖 学 号: 200503050417 导师与职称: 李俊生教授 2009年6月2009 Annual GraduationThesis (Project) oftheCollegeUndergraduate LAN instant messaging software design and developmentDepartment: College of Engineering puter Science and Technolo

2、gy Dept.Major: puter Science and TechnologyGrade:2005Students Name:Li Zhong LinStudent No.:200503050417Advisor:Professor Li Jun Sheng June, 2009毕业论文设计原创性声明本人所呈交的毕业论文设计是我在导师的指导下进展的研究工作与取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文设计不包含其他个人已经发表或撰写过的研究成果。对本论文设计的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期:毕业论文设计授权使用说明本论

3、文设计作者完全了解红河学院有关保存、使用毕业论文设计的规定,学校有权保存论文设计并向相关部门送交论文设计的电子版和纸质版。有权将论文设计用于非赢利目的的少量复制并允许论文设计进入学校图书馆被查阅。学校可以公布论文设计的全部或局部内容。某某的论文设计在解密后适用本规定。 作者签名: 指导教师签名:日期: 日期:毕业论文设计辩论委员会(辩论小组)成员某某职称单位备注主席组长摘要 随着计算机的普与和Internet的飞速开展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在局部人的生活中已经必不可少,目前,在网络上新流行的通信软件有MSN, UC,阿里旺旺

4、,诚信通,mycool甚至有的网络通信软件可以发送手机短信,可谓网络通信软件百家争鸣,各有千秋,即便这样,像QQ, MSN这样的老牌网络通信工具仍然是大局部网民的首选,特别是局域网内的通信软件IP信使,它自从1996年问世以来,一直受到各大企业单位和学校机房的青睐。因此通过研究IP信使的通信协议来实现局域网即时通信软件的人越来越多。 本软件就是通过分析了IP信使局部通信协议,利用delphi7.0编程工具编写的局域网即时通信软件。开发时使用了delphi7.0中的INDY组件里的UDP控件来实现用户上下线和文字聊天,其中,用户上下线主要是利用UDP广播机制来实现的。使用INDY组件里的UDP控

5、件和TCP控件来实现文件的传送,其中UDP控件用来处理文件收发应答,TCP控件用来建立安全可靠的文件流数据传输通道,保证文件发送的完整性。软件主要实现了用户注册、文字聊天、文件传送、用户身份验证、视频播放 、MP3播放等功能,同时,信息的传送具有不需要中心服务器的特点,实现了局域网内点对点的信息传输。本软件从需求分析、软件的设计、具体功能的实现都严格遵循了软件设计工程的思想。关键词:聊天;文件传送;用户身份验证;Delphi7.0;UDP;TCP;AbstractWith the widespread of puter and rapid development of Internet ,hu

6、man has e into the information age ,no matter where people are ,they can municate with each other and exchange information through the NetWork munications software are quite necessary to a part of people in their life At present, a new epidemic in the Messenger munications software with MSN, UC, Ali

7、Wangwang, Chengxintong, mycool, and even some munication software can send SMS, network munication software is a hundred schools of thought, is different, even so, such as QQ, this munication tools of the old Brand is still the first choice for most users, especially within the local area network mu

8、nication software IP messenger, which since its designed in 1996, has been the major business units and schools in the puter room of the popular., therefore more and more people achieve LAN instant messaging software through analyzing IP messenger s munication protocol .By analyzing part of the IP m

9、essenger munication protocol, using the programming tools named delphi7.0 prepare LAN instant messaging software. Delphi7.0 used to develop the INDY ponents in the UDP to achieve user control and text chat on line, in which users on the upline and downlineare to use UDP broadcasting method to achiev

10、e. INDY ponents used in the UDP and TCP control to achieve control of document flow, which controls UDP response to deal with documents, TCP controls used to create secure and reliable data transmission stream channel, and ensure the integrity of documents sent. The main achievement of the software

11、the user registration, text chat, file transfer, user authentication, video player, MP3 player and other functions at the same time, the transmission of information does not require a central server with the characteristics of a LAN peer-to-peer messaging. The software from the needs analysis, softw

12、are design, the realization of specific functions are strictly followed the idea of software engineering design. KeyWords :chat ;file transfer;ID authentication;Delphi7.0 ;UDP ;TCP第一章引言11.1开发的目的11.2 开发平台简介11.3 软件运行平台1第二章需求分析32.1 可行性分析32.2功能需求分析34442.2 界面描述4第三章软件的设计53.1 功能模块的设计556893.2软件操作界面的设计10第四章模

13、块的实现代码124.1 用户列表的实现代码124.2 聊天消息收发流程的实现代码134.3 文件收发流程的实现代码174.4 用户身份验证流程的实现代码26第五章软件测试305.1功能测试3030303131315.2数据测试31第六章制作安装程序33第七章完毕语37参考文献38致谢39第一章 引言1.1开发的目的 随着计算机的普与和Internet飞速开展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在局部人的生活中已经必不可少。比如QQ、Message等等都是大家比拟喜爱的聊天工具。然而我们在使用聊天工具时都要登陆服务器,这对于在一个局域网内的

14、用户们交换信息,传送文件不太方便,原因是:1).登陆服务器时麻烦的操作 ,2).假设局域网没有联网或者网络故障不能连接英特网,QQ、Message等通信工具就失去了意义。本次局域网即时通信软件的设计就是针对局域网内的用户即时通信而开发的。1.2 开发平台简介使用Delphi7.0作为开发工具。Delphi是Borland公司研制的可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了100多个可供使用的构件,利用部件,可以

15、快速地构造出应用系统。Delphi7.0在保持原有版本优点的根底上增加了很多更新更强的新特性,主要改良有:扩大了VCL(Visual ponent Libraris)可视化组件库;对编辑器和编译器方面做了更多改良和优化;增加了多种网络应用开发的控件包如Indy和Web编程技术;完全支持.NET技术与XML技术等;支持跨平台开发类库CLX。在本次设计中,主要使用控件包Indy中的网络控件来实现聊天和文件传送等功能。1.3 软件运行平台 硬件环境:处理器:PIII 1G以上;内存:128M 以上;硬盘:10G 以上可用磁盘空间;网络适配器:10/100M自适应网卡。软件环境:操作系统:Window

16、s 2000以上版本网络要求:局域网内第二章 需求分析2.1 可行性分析局域网通信软件是网络通信软件的一个重要分支,它的主要功能就是实现局域网内的信息传递,信息传递包括了文字信息传送和文件传送两大根本功能。目前,局域网通信软件大概可以分为两类,第一类是居于中心服务器的,所谓基于中心服务器就是,两台或多台计算机通信时,必须经过同一个服务器对双方的信息进展,这样的模式易于管理所有的客户端,但这就需要一台计算机来做服务器对所有的客户端信息进展,所有客户端在使用时必须登陆服务器,对于小型的局域网来说,中心服务器模式的通信软件在使用时是比拟麻烦的,同时服务器的开销也是一笔不小的开支。第二类无需中心服务器

17、,这类局域网通信软件是基于分散式服务器模式,它在信息传递时既是服务器又是客户端,局域网内的每台计算机网络负载均衡,用户在使用它时不需登陆服务器,极为方便。本软件基于分散式服务器模式,在设计时,选用Delphi7.0作为开发工具,Delphi7.0的网络控件提供了大量的网络控件,它们封闭了复杂的具体实现细节,因此使用Delphi7.0来开发局域网通信软件是很方便的。早在1996年,局域网即使通信软件的代表IP信使就已经问世,时隔13年的今天,IP信使仍然深受各大企业、单位、高校计算机机房的喜爱,因此,无论从技术角度还是软件的实用性方面来讲,基于分散式服务器模式的局域网即时通信软件的设计是可行的。

18、2.2功能需求分析本人通过对现有的局域网通信软件IPMSG和LanTalk.Net等即时通信软件的使用和分析后,总结出用户对于局域网通信软件的根本功能需求,因此局域网即时通信软件的功能要符合用户的要求就必须实现以下三个根本功能:聊天是局域网通信核心的局部,用户聊天时,都不会喜欢复杂的操作,在设计时尽量使聊天功能的操作简单化,实用化。通常,局域网聊天软件都会有一个用户列表,用户在点击列表中的用户名后,就可以和对方聊天。当然,局域网内广播消息也是必不可少的一个功能,因此要实现聊天功能首先要解决的问题就是用户上线,下线,之后还要考虑到双方聊天时的通信安全。文件传输使局域网通信软件变得更有价值,聊天功

19、能只能实现文字的传送,但文件传输的功能就可以实现,各种文件的传送,使用户之间的信息交流更具现实意义。为此,在实现这一功能时要解决的问题就是传输瓶颈,实现大文件的传送,和高速传输。在本次的设计中,信息的安全措施可以采用本地验证的方式向对方用户发送身份验证,对方收到验证消息后输入对方注册的用户名的密码进展验证,验证成功如此向消息验证主动方发送验证成功的消息,验证失败如此返回一条验证失败的消息给消息验证主动方这样身份验证在局域网内能保证信息的安全。在实现上述主要功能后,还要考虑到增加一些附加功能,比如音乐播放功能和视频播放功能,这样,用户在进展通信的时候也可以听音乐,看电影,即使户没有使用通信功能,

20、也可以把它当做播放器来使用。2.2 界面描述界面不仅仅是软件的外衣,最重要的是能让用户快速上手。复杂的操作界面会使用户难以承受,相反,简单而美观的操作界面会让用户爱不释手,这就是为很多用户喜欢windows操作系统的原因。局域网即时通信软件的操作界面,界面简洁,直观,操作简便。第三章 软件的设计3.1 功能模块的设计图3-1 软件功能模块如果说聊天模块是局域网即时通信的核心,那么用户列表就是局域网即时通信的核心的核心,因为当我们要发送消息和传送文件的时候必须要确定接收方是谁,必须知道接收方的IP地址。软件启动后就必需完成用户上下线的功能,上线用户信息包括用户名和所属的计算机的IP地址,这两个用

21、户信息在界面中的“用户IP列表中显示出来,这样,用户就可以知道有哪些用户在线,用户的计算机IP地址是多少,此外,文件的发送也需要“用户IP列表。因此在实现聊天功能前就要先实现用户的上线这个最根本的功能。实现用户上下线的流程如下: 图 3-2 上下线的流程A机软件启动后自动获取本机地址和用户注册名以500毫秒为间隔向局域网广播,B机软件处于启动状态自动接收到A机软件发送的A机地址和用户名后存入“用户IP列表。A软件关闭时广播下线消息,B机软件接收到A机下线消息后在IP列表框内删除对应用户名和IP。 实现了用户上线功能后,就可以进展聊天模块的设计了。在delphi7.0中的INDY组件里有两组控件

22、即UDPclient UDPserver和TCPclient TCPserver, UDPclient UDPserver这组控件基于UDP协议,由于考虑到TCP的对系统资源的要求较高,而UDP对系统资源的要求低,它的协议非常精简且发送包的速度快,所以我选用了UDPclient UDPserver这组控件来实现聊天模块的客户端和服务端,以下是聊天消息接收和发送的流程: 图3-3 聊天消息接收和发送流程A机软件启动UDP服务端自动设置端口号、UDP客户端自动设置端口号后处于信息接收、信息发送就绪状态,B机软件处于启动状态并且B机的UDP客户端将所发送的目的IP设置为A机IP,此时用户在消息输入框

23、输入要发送的消息点击发送按钮后,B机UDP客户端将所发送的消息打包发送至A机,A机的UDP服务端自动接收来自B机的数据包放到缓存,然后判断软件是否托盘,如果B机软件处于托盘状态,如此判断是否进展托盘免打扰设置,如果否,那么B机软件就会弹出一个消息提示提醒用户有新消息,接下来再判断接收到的消息是否被加密,如果是,如此解密收到的消息并显示,如果否直接显示消息。在聊天模块中,消息的广播功能是不可缺少的,消息广播的实现和一对一消息收发的原理根本一致,不同的是,当用户选择消息广播功能时,消息发送的目的IP是该局域网里的广播地址。文件传输的实现比聊天功能的实现更具难度,在聊天功能时,使用的协议是UDP,而

24、且delphi中的UDP控件在使用时也很简单,很方便,然而实现文件传输时,就要同时用到UDPclient UDPserver和TCPclient TCPserver这两组控件,除此之外,文件传送的协议还必须自己写,以下文件传输过程: 图3-4文件传输流程当A机向B机发送文件的同时,A机向B机发送一条询问消息是否接收,此时B机弹出文件保存框,如果点击取消,B机向A机发送一条消息拒绝接收,A机接收到消息“拒绝接收后取消发送。如果B机文件保存框的“保存按钮被点击,B机向A机发送一条消息请求接收,A机接收到B机的“请求接收消息后向B机发送消息将要发送,B机接收到消息“将要发送向A机发送消息准备承受,A

25、机收到“准备承受后就开始向B机传送文件和文件的长度,在文件传送的过程中,如果B机点击“取消按钮,B机如此向A机发送一条消息取消发送,A机接收到“取消发送消息后立即停止发送操作并清空缓存。如果没有B机的“取消按钮没有被点击,A机继续传送文件,B机继续接收文件,文件传送完毕后A机向B机发送一条消息文件传送完毕。本设计的用户身份验证采用本地验证的方式,它的功能主要实现的是:用户A向用户B发送身份验证消息,这条消息包含有用户B的用户某某,当B机收到A机发送的请求验证消息后,在B机用户注册信息中查找用户B的某某,如果用户B的某某存在,那么,B机把用户B的密码取出,放入一个变量中等待用户B输入密码并点击“

26、确定,如果用户B输入密码并点击了确定,此时变量中的密码将与用户B输入的密码进展比拟,如果两个密码一致,B机向A机发送一条消息验证成功,如果两个密码不一致,B机向A机发送一条消息验证失败,密码错误,如果变量为空,B机向A机发送一条消息验证失败,用户没有注册。以下是用户身份验证的流程: 图3-5 用户身份验证的流程3.2软件操作界面的设计软件的界面美观与否虽然不能表现软件的质量和功能,但不美观的界面总会给用户不好的第一印象。同时,用户的审美观是不一致的,因此在设计界面时使用VclSkin制作了8种风格的界面可供用户选择,在操作方面,尽量使操作界面简洁,并且使用提示帮助用户进展正确操作,以下是XP风

27、格的局部界面截图:图3-6 软件操作主界面图3-7用户注册界面 图3-8密码修改界面图3-9用户名自动登录设置界面 图3-10视频播放界面图3-11程序最小化托盘界面第四章 模块的实现代码4.1 用户列表的实现代码此代码实现用户上下线功能,其流程图为 图 3-2procedure TFormmain.udpsr2UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var m2: TmBlock2;/ TmBlock2为记录型 userlt, temp, iplt: string; i: Integer;beg

28、in AData.ReadBuffer(m2, AData.Size); /从m2读取数据 if m2.downlineflag = downline then begin /如果字符数组m2中的downlineflag值为downline userlt := m2.name; /把m2.name存入变量userlt iplt := m2.ip;/把m2. ip存入变量iplt temp := userlt + + #9 + + iplt; begin begin /temp里面是已经下线了的用户名和用户IP4; /如果ip列表中有和temp一样的值就删除收到对方下线广播,删除对应的用户名和用

29、户IP if userlt then begin的用户 + + userlt + + 在 + edttime.Text + 时下线!);/提示对方下线 lbluplinecount.Caption :=IntToStr(strToint(lbluplinecount.Caption) - 1);/在线人数-1 end; end; end; end else begin userlt := m2.name; iplt := m2.ip; begin end; end;end;4.2 聊天消息收发流程的实现代码此代码实现聊天消息收发流程,其流程图为图3-3procedure TFormmain.b

30、tnsendClick(Sender: TObject)1; /聊天消息发送的过程var m: TmBlock;/记录型数组的定义begin if udpct1.Host = then begin ShowMessage(请选择聊天的对象); keybd_event(VK_BACK, 0, 0, 0);/退格 end else begin if chk2.Checked = False then begin m.SenderName := 【 + GStack.LocalAddress + 】 + 【 +edtname.Text+ 】 ; m.Msg := mmosend.Text; m.fl

31、ag := ; if m.Msg = then begin ShowMessage(发送消息为空,请输入您要发送的消息); keybd_event(VK_BACK, 0, 0, 0); end else begin mmosend.Clear; keybd_event(VK_BACK, 0, 0, 0); end; end else begin m.SenderName := 【 + GStack.LocalAddress + 】 + 【 + edtname.Text + 】 ; m.Msg := Enc(mmosend.Text); /对发送的文字进展加密 m.flag:= 加密; if m

32、.Msg = then begin ShowMessage(发送消息为空,请输入您要发送的消息); keybd_event(VK_BACK, 0, 0, 0); end else begin udpct1.SendBuffer(m, sizeof(m); mmosend.Clear; keybd_event(VK_BACK, 0, 0, 0); end; end; end;end;procedure TFormmain.udpsr1UDPRead(Sender: TObject; AData: TStream;/聊天消息接收过程 ABinding: TIdSocketHandle);var m

33、: TmBlock;begin AData.ReadBuffer(m, AData.Size);/读取信息 if chkmessage.Checked = True and chk1.Checked = False then begin if chk3.Checked = True then begin/上面的条件是用来实现软件托盘后接收到消息弹出提示 messagebeep(1);/发出声音提示 Formmain.Show;/消息窗口弹出 chk3.Checked := False; chkmessage.checked := False; ShowMessage(您有新消息,请查收); i

34、f m.flag = 加密 then begin end else begin end; end; end else if m.flag = 加密 then begin2); /接收到加密消息用Dec( )函数进展解密 end else begin end;end;4.3 文件收发流程的实现代码此代码实现文件收发的功能,其流程图为图3-4procedure TFormmain.btnserchsendfileClick(Sender: TObject);begin if dlgOpen3.Execute then edtserchfile.Text := ExtractFileName(dlg

35、Open3.FileName); if edtserchfile.Text then begin btnfilesend.Enabled := True; btnsendcancel.Enabled := True; end;end;procedure TFormmain.btnfilesendClick(Sender: TObject); /文件发送端var m: TmBlock1;begin if edthost.Text then begin udpfilect.Host := edthost.Text; udpfilect.Port := 66666; udpfilect.Active

36、 := True; m.filename := edtserchfile.Text; m.sendname := edtname.Text; m.IP := GStack.LocalAddress; udpfilect.SendBuffer(m, SizeOf(m); if not FileExists(edtserchfile.Text) then /检测文件是否存在 begin Showmessage(文件不存在,请选择文件!); btnfilesend.Enabled := False; btnsendcancel.Enabled := False; exit; end; /建立文件流

37、AFileStream := TFileStream.Create(edtserchfile.Text, fmOpenRead)3; pb1.Max := AFileStream.Size; pb1.Position := 0; ButtonBegin; /开始状态设置 /服务端准备好连接 IdTCPServer1.DefaultPort := 45625; if not IdTCPServer1.Active then IdTCPServer1.Active := True; end else begin ShowMessage(请选择文件接收方!); end;end;procedure T

38、Formmain.ButtonBegin;begin /开始状态设置 btnserchsendfile.Enabled := False; btnfilesend.Enabled := True; btnsendcancel.Enabled := True;end;procedure TFormmain.ButtonEnd;begin/完毕状态设置 btnserchsendfile.Enabled := True; btnfilesend.Enabled := False; btnsendcancel.Enabled := False;procedure TFormmain.btnsendca

39、ncelClick(Sender: TObject);begin StatusBar1.SimpleText := 传输取消.; AFileStream.Free; /释放文件流 ButtonEnd; /完毕状态设置end;procedure TFormmain.IdTCPServer1Execute(AThread: TIdPeerThread); / 文件发送端var cmd: string; /接收到客户端的字符串信息 ASize: Integer; /需要传输的流大小begin with AThread.Connection do /已经连街上的一个进程 begin cmd := Up

40、perCase(ReadLn); /客户端发送的命令字符串 if cmd = BEGIN then/开始传输 begin /告诉远程传输文件的大小和文件名 WriteLn(Format(%d|%s, AFileStream.Size, ExtractFileName(edtserchfile.Text); StatusBar1.SimpleText := 准备传输.; Exit; end; if cmd = END then begin /传输完成 btnsendcancel.Click; StatusBar1.SimpleText := 传输完成.; pb1.Position := 0; E

41、xit; end; if cmd = CANCEL then begin /传输取消 StatusBar1.SimpleText := 传输被取消.;/保持传输状态 Exit; end;/按照指定位置传输文件 AFileStream.Seek(StrToInT(cmd), soFromBeginning); /转到文件流传输的位置 ASize := Min(AFileStream.Size - AFileStream.Position, RecvBufferSize); OpenWriteBuffer;/准备发送缓冲 WriteStream(AFileStream, false, false,

42、 ASize); CloseWriteBuffer; /完毕发送缓冲 StatusBar1.SimpleText := Format(当前传输位置%s/大小%d, cmd, AFileStream.Size); pb1.Position := pb1.Position + ASize; end;end;procedure TFormmain.btnfilesaveClick(Sender: TObject); /文件接收端var cmd: string; ASize, TotalSize: Int64; AFileStream: TFileStream; s1,s2,s3:string; be

43、gin lbl11.Visible := True; g2.Visible := True; btncancelsave.Visible := True; StatusBar2.Visible := True; IdTCPClient1.Host := s2; /连接主机 IdTCPClient1.Port := 45625; IdTCPClient1.Connect; /连接 try IdTCPClient1.WriteLn(BEGIN);/提示服务端,客户端始接收 cmd := IdTCPClient1.ReadLn;/以“|符号为别离文件名界限 dlgSave3.FileName :=

44、Copy(cmd, Pos(|, cmd) + 1, Length(cmd); if not dlgSave3.Execute then begin IdTCPClient1.WriteLn(CANCEL); /告诉服务端取消发送 IdTCPClient1.Disconnect; /断开连接 btncancelsave.Visible := False; btnfilesave.Visible := False; lbl11.Visible := False; g2.Visible := False; btncancelsave.Visible := False; StatusBar2.Vis

45、ible := False; exit; lbl11.Visible := False; g2.Visible := False; btncancelsave.Visible := False; StatusBar2.Visible := False; end; TickCount := GetTickCount; TotalSize := StrToInt(Copy(cmd, 0, Pos(|, cmd) - 1); /别离文件大小/建立文件流准备接收 AFileStream := TFileStream.Create(dlgSave3.FileName, fmCreate); try /循

46、环开始承受 repeat IdTCPClient1.WriteLn(IntToStr(AFileStream.Size); /发送当前传输的位置 ASize := Min(TotalSize - AFileStream.Size, IdTCPClient1.RecvBufferSize);/选择剩余大小和缓冲区大小小的一个作为传输的大小 IdTCPClient1.ReadStream(AFileStream, ASize); /流的承受 g2.MaxValue := TotalSize; g2.Progress := AFileStream.Size; StatusBar2.SimpleTex

47、t := Format(%d/大小%d, AFileStream.Size, TotalSize); Application.ProcessMessages; until AFileStream.Size = TotalSize; /判断大小一致了就表示完毕 finally AFileStream.Free; /释放文件流 end; IdTCPClient1.WriteLn(END); /提示服务端传输完成 StatusBar2.SimpleText := 传输完成.; g2.Progress := 0; minutes := 0; seconds := 0; lbl11.Visible :=

48、 False; g2.Visible := False; StatusBar2.Visible := False; btncancelsave.Visible := False; time := GetTickCount - TickCount;/计算发送耗时 if TotalSize=1048576 then begin if time=1000 then begin s1:= FloatToStr(TotalSize/1048576)/(time/1000); end; end; if TotalSize1048576 then begin if time 60000 then begin

49、 minutes := IntToStr(time div 60000); if (time mod 60000) 1000 then begin seconds := IntToStr(time mod 60000) div 1000); milliseconds := IntToStr(time mod 60000) mod 1000); end; end; if (GetTickCount - TickCount) 1000 then begin seconds := IntToStr(time div 1000); milliseconds := IntToStr(time mod 1

50、000); end; end; if (GetTickCount - TickCount) 1000 then begin milliseconds := IntToStr(time); end; except StatusBar2.SimpleText := 连接服务器失败或者对方已经中断传输!; lbl11.Visible := False; g2.Visible := False; btncancelsave.Visible := False; StatusBar2.Visible := False; end; IdTCPClient1.Disconnect; btncancelsave

51、.Visible := False; lbl11.Visible := False; g2.Visible := False; StatusBar2.Visible := False;end;procedure TFormmain.udpfilesrUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);var m: TmBlock1;begin AData.ReadBuffer(m, AData.Size); if m.cancel = 取消接收 then begin btnsendcancel.Click; S

52、howMessage(对方拒绝接收); end; if m.sendname then begin if m.IP then begin s1 := 朋友 + + m.sendname + + 向你发送文件 + + m.filename + + 您是否接收?; s2 := m.IP; if (Application.MessageBox(pchar(Format(您好!%s, s1), 提示:, MB_YESNO) = IDYES) then begin btnfilesave.Click; end else begin btncancelsave.Click; end; end; end;e

53、nd;procedure TFormmain.btncancelsaveClick(Sender: TObject);var m: TmBlock1;begin udpfilect.Host := s2; udpfilect.Port := 66666; m.cancel := 取消接收; m.sendname := ; m.IP := ; m.filename := ; udpfilect.SendBuffer(m, SizeOf(m); btnfilesave.Visible := False; lbl11.Visible := False; g2.Visible := False; bt

54、ncancelsave.Visible := False; StatusBar2.Visible := False;end;procedure TFormmain.tmr4Timer(Sender: TObject)begin tmr4.Interval:=5000; if Win32Platform = VER_PLATFORM_WIN32_NT then begin SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF); Application.ProcessMessages; end;end;4.4 用户身份验

55、证流程的实现代码此代码实现用户身份验证功能,其流程图为图3-5procedure TFormmain.btnsendyanzhengClick(Sender: TObject); /点击向对方发送验证)时一系列过程var m3: TmBlock3;begin if edthost.Text = then begin showmessage(请点击用户IP列表选择你要进展身份验证的用户) end else if edtnametemp.Text = then begin showmessage(对方没有设置用户名,不能向对方发送身份验证请求!) end else begin udpct3.Port := 9527; udpct3.Host := edthost.Text; udpct3.Active := True; m3.othername := edtnametemp.Text; m3.infor := 验证请求来自 + 【 + edtname.Text + 】 +时间+ t + ,请您在弹出证框中输入密码并使用回车键验证; m

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!