大学计算机毕 业设计_基于delphi的局域网即时通信软件的设计与开

更新时间:2023-04-26 14:04:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

随着计算机的普及和Internet的飞速发展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在部分人的生活中已经必不可少,目前,在网络上新流行的通信软件有MSN,

UC,阿里旺旺,诚信通,mycool甚至有的网络通信软件可以发送手机短信,可谓网络通信软件百家争鸣,各有千秋,即便这样,像QQ,

MSN这样的老牌网络通信工具仍然是大部分网民的首选,特别是局域网内的通信软件IP信使,它自从1996年问世以来,一直受到各大企业单位和学校机房的青睐。因此通过研究IP信使的通信协议来实现局域网即时通信软件的人越来越多。

本软件就是通过分析了IP信使部分通信协议,利用delphi7.0编程工具编写的局域网即时通信软件。开发时使用了delphi7.0中的INDY组件里的UDP控件来实现用户上下线和文字聊天,其中,用户上下线主要是利用UDP广播机制来实现的。使用INDY组件里的UDP控件和TCP控件来实现文件的传送,其中UDP控件用来处理文件收发应答,TCP控件用来建立安全可靠的文件流数据传输通道,保证文件发送的完整性。软件主要实现了用户注册、文字聊天、文件传送、用户身份验证、视频播放

、MP3播放等功能,同时,信息的传送具有不需要中心服务器的特点,实现了局域网内点对点的信息传输。本软件从需求分析、软件的设计、具体功能的实现都严格遵循了软件设计工程的思想。

关键词:聊天;文件传送;用户身份验证;Delphi7.0;UDP;TCP;

Abstract

With the widespread of computer and rapid development of Internet ,human has come into the information age ,no matter where people are ,they can communicate with each other and exchange information through the NetWork Communications software are quite necessary to a part of people in their life At present, a new epidemic in the Messenger Communications software with MSN, UC, AliWangwang, Chengxintong, mycool, and even some communication software can send SMS, network communication software is a hundred schools of thought, is different, even so, such as QQ, this communication tools of the old Brand is still the first choice for most users, especially within the local area network communication software IP messenger, which since its designed in 1996, has been the major business units and schools in the Computer room of the popular., therefore more and more people achieve LAN instant messaging software through analyzing IP messenger 's communication protocol .

By analyzing part of the IP messenger communication protocol, using the programming tools named delphi7.0 prepare LAN instant messaging software. Delphi7.0 used to develop the INDY components in the UDP to achieve user control and text chat on line, in which users on the upline and downline are to use UDP broadcasting method to achieve. INDY components 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 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, software 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

目录

第一章引言 (1)

1.1开发的目的 (1)

1.2 开发平台简介 (1)

1.3 软件运行平台 (1)

第二章需求分析 (3)

2.1 可行性分析 (3)

2.2功能需求分析 (3)

2.2.1聊天(文字传送) (4)

2.2.2文件传输 (4)

2.2.3 用户身份验证 (4)

2.2 界面描述 (4)

第三章软件的设计 (5)

3.1 功能模块的设计 (5)

3.1.1用户IP列表的设计 (5)

3.1.2 聊天模块的设计 (6)

3.1.3 文件传送模块的设计 (8)

3.1.4 用户身份验证模块的设计 (9)

3.2软件操作界面的设计 (10)

第四章模块的实现代码 (12)

4.1 用户列表的实现代码 (12)

4.2 聊天消息收发流程的实现代码 (13)

4.3 文件收发流程的实现代码 (17)

4.4 用户身份验证流程的实现代码 (26)

第五章软件测试 (30)

5.1功能测试 (30)

5.1.1 聊天功能的测试 (30)

5.1.2 文件传送功能的测试 (30)

5.1.3 身份验证功能的测试 (31)

5.1.4 音乐播放功能的测试 (31)

5.1.5 视频播放功能的测试 (31)

5.2数据测试 (31)

第六章制作安装程序 (33)

第七章结束语 (37)

参考文献 (38)

致谢 (39)

红河学院本科毕业论文(设计)

第一章引言

1.1开发的目的

随着计算机的普及和Internet飞速发展,人们已经进入了信息化的时代,无论人们身在何方都可以利用网络彼此沟通、交换信息,网络聊天工具在部分人的生活中已经必不可少。比如QQ、YahooMessage等等这些都是大家比较喜爱的聊天工具。然而我们在使用这些聊天工具时都要登陆服务器,这对于在一个局域网内的用户们交换信息,传送文件不太方便,原因是:1).登陆服务器时麻烦的操作

,2).假设局域网没有联网或者网络故障不能连接英特网,QQ、YahooMessage等通信工具就失去了意义。

本次局域网即时通信软件的设计就是针对局域网内的用户即时通信而开发的。

1.2 开发平台简介

使用Delphi7.0作为开发工具。Delphi是Borland公司研制的可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了100多个可供使用的构件,利用这些部件,可以快速地构造出应用系统。Delphi7.0在保持原有版本优点的基础上增加了很多更新更强的新特性,主要改进有:扩大了VCL(Visual Component

Libraris)可视化组件库;对编辑器和编译器方面做了更多改进和优化;增加了多种网络应用开发的控件包如Indy和Web编程技术;完全支持.NET技术及XML技术等;支持跨平台开发类库CLX。在本次设计中,主要使用控件包Indy中的网络控件来实现聊天和文件传送等功能。

1.3 软件运行平台

硬件环境:

1

第一章引言

处理器:PIII 1G以上;

内存:128M 以上;

硬盘:10G 以上可用磁盘空间;

网络适配器:10/100M自适应网卡。

软件环境:

操作系统:Windows 2000以上版本

网络要求:局域网内

红河学院本科毕业论文(设计)

第二章需求分析

2.1 可行性分析

局域网通信软件是网络通信软件的一个重要分支,它的主要功能就是实现局域网内的信息传递,信息传递包括了文字信息传送和文件传送两大基本功能。目前,局域网通信软件大概可以分为两类,第一类是居于中心服务器的,所谓基于中心服务器就是,两台或多台计算机通信时,必须经过同一个服务器对双方的信息进行转发,这样的模式易于管理所有的客户端,但这就需要一台计算机来做服务器对所有的客户端信息进行转发,所有客户端在使用时必须登陆服务器,对于小型的局域网来说,中心服务器模式的通信软件在使用时是比较麻烦的,同时服务器的开销也是一笔不小的开支。第二类无需中心服务器,这类局域网通信软件是基于分散式服务器模式,它在信息传递时既是服务器又是客户端,局域网内的每台计算机网络负载均衡,用户在使用它时不需登陆服务器,极为方便。

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

2.2功能需求分析

本人通过对现有的局域网通信软件(IPMSG和3c6983eadd88d0d232d46a04等即时通信软件)的使用和分析后,总结出用户对于局域网通信软件的基本功能需求,因此局域网即时通信软件的功能要符合用户的要求就必须实现以下三个基本功能:

第二章需求分析

2.2.1聊天(文字传送)

聊天是局域网通信核心的部分,用户聊天时,都不会喜欢复杂的操作,在设计时尽量使聊天功能的操作简单化,实用化。通常,局域网聊天软件都会有一个用户列表,用户在点击列表中的用户名后,就可以和对方聊天。当然,局域网内广播消息也是必不可少的一个功能,因此要实现聊天功能首先要解决的问题就是用户上线,下线,之后还要考虑到双方聊天时的通信安全。

2.2.2文件传输

文件传输使局域网通信软件变得更有价值,聊天功能只能实现文字的传送,但文件传输的功能就可以实现,各种文件的传送,使用户之间的信息交流更具现实意义。为此,在实现这一功能时要解决的问题就是传输瓶颈,实现大文件的传送,和高速传输。

2.2.3 用户身份验证

在本次的设计中,信息的安全措施可以采用本地验证的方式(向对方用户发送身份验证,对方收到验证消息后输入对方注册的用户名的密码进行验证,验证成功则向消息验证主动方发送验证成功的消息,验证失败则返回一条验证失败的消息给消息验证主动方)这样身份验证在局域网内能保证信息的安全。

在实现上述主要功能后,还要考虑到增加一些附加功能,比如音乐播放功能和视频播放功能,这样,用户在进行通信的时候也可以听音乐,看电影,即使户没有使用通信功能,也可以把它当做播放器来使用。

2.2 界面描述

界面不仅仅是软件的外衣,最重要的是能让用户快速上手。复杂的操作界面会使用户难以接受,相反,简单而美观的操作界面会让用户爱不释手,这就是为什么很多用户喜欢windows操作系统的原因。局域网即时通信软件的操作界面,界面简洁,直观,操作简便。

第三章软件的设计

3.1 功能模块的设计

图3-1 软件功能模块

3.1.1用户IP列表的设计

如果说聊天模块是局域网即时通信的核心,那么用户列表就是局域网即时通信的核心的核心,因为当我们要发送消息和传送文件的时候必须要确定接收方是谁,必须知道接收方的IP地址。软件启动后就必需完成用户上下线的功能,上线用户信息包括用户名和所属的计算机的IP地址,这两个用户信息在界面中的“用户IP列表”中显示出来,这样,用户就可以知道有哪些用户在线,这些用户的计算机IP地址是多少,此外,文件的发送也需要“用户IP列表”。因此在实现聊天功能前就要先实现用户的上线这个最基本的功能。实现用户上下线的流

程如下:

第三章软件的设计

图 3-2 上下线的流程

A机软件启动后自动获取本机地址和用户注册名以500毫秒为间隔向局域网广播,B机软件处于启动状态自动接收到A机软件发送的A机地址和用户名后存入“用户IP列表”。A软件关闭时广播下线消息,B机软件接收到A机下线消息后在I P列表框内删除对应用户名和IP。

3.1.2 聊天模块的设计

实现了用户上线功能后,就可以进行聊天模块的设计了。在delphi7.0中的INDY 组件里有两组控件即(UDPclient UDPserver)和(TCPclient TCPserver), (UDPclient

UDPserver)这组控件基于UDP协议,由于考虑到TCP的对系统资源的要求较高,而UDP对系统资源的要求低,它的协议非常精简且发送包的速度快,所以我选用了(UDPclient

第三章软件的设计

UDPserver)这组控件来实现聊天模块的客户端和服务端,以下是聊天消息接收和发送的流程:

红河学院本科毕业论文(设计)

图3-3 聊天消息接收和发送流程

A机软件启动UDP服务端自动设置端口号、UDP客户端自动设置端口号后处于信息接收、信息发送就绪状态,B机软件处于启动状态并且B机的UDP客户端将所发送的目的IP设置为A机IP,此时用户在消息输入框输入要发送的消息点击发送按钮后,B机UDP客户端将所发送的消息打包发送至A机,A机的UDP服务端自动接收来自B机的数据包放到缓存,然后判断软件是否托盘,如果B机软件处于托盘状态,则判断是否进行托盘免打扰设置,如果否,那么B机软件就会弹出一个消息提示提醒用户有新消息,接下来再判断接收到的消息是否被加密,如果是,则解密收到的消息并显示,如果否直接显示消息。

在聊天模块中,消息的广播功能是不可缺少的,消息广播的实现和一对一消息收发的原理基本一致,不同的是,当用户选择消息广播功能时,消息发送的目的IP是该局域网里的广播地址。

第三章软件的设计

3.1.3 文件传送模块的设计

文件传输的实现比聊天功能的实现更具难度,在聊天功能时,使用的协议是UDP,而且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机收到“准备接受”后就开始向B机传送文件和文件的长度,在文件传送的过程中,如果B机点击“取消”按钮,B机则向A机发送一条消息(取消发送),A机接收到“取消发送”消息后立即停止发送操作并清空缓存。如果没有B机的“取消按钮”没有被点击,A机继续传送文件,B机继续接

第三章软件的设计

红河学院本科毕业论文(设计)

收文件,文件传送完毕后A机向B机发送一条消息(文件传送结束)。

3.1.4 用户身份验证模块的设计

本设计的用户身份验证采用本地验证的方式,它的功能主要实现的是:用户A向用户B发送身份验证消息,这条消息包含有用户B的用户姓名,当B机收到A机发送的请求验证消息后,在B机用户注册信息中查找用户B的姓名,如果用户B的姓名存在,那么,B机把用户B的密码取出,放入一个变量中等待用户B输入密码并点击“确定”,如果用户B输入密码并点击了确定,此时变量中的密码将与用户B输入的密码进行比较,如果两个密码一致,B机向A机发送一条消息(验证成功),如果两个密码不一致,B机向A机发送一条消息(验证失败,密码错误),如果变量为空,B机向A机发送一条消息(验证失败,用户没有注册)。以下是用户身份验证的流程:

图3-5 用户身份验证的流程

红河学院本科毕业论文(设计)

3.2软件操作界面的设计

软件的界面美观与否虽然不能体现软件的质量和功能,但不美观的界面总会给用户不好的第一印象。同时,用户的审美观是不一致的,因此在设计界面时使用VclSkin制作了8种风格的界面可供用户选择,在操作方面,尽量使操作界面简洁,并且使用提示帮助用户进行正确操作,以下是XP风格的部分界面截图:

图3-6 软件操作主界面

红河学院本科毕业论文(设计)图3-7用户注册界面图3-8密码修改界面

图3-9用户名自动登录设置界面图3-10视频播放界面

图3-11程序最小化托盘界面

第四章模块的实现代码

第四章模块的实现代码

4.1 用户列表的实现代码

此代码实现用户上下线功能,其流程图为图 3-2

procedure TFormmain.udpsr2UDPRead(Sender: TObject; AData: TStream;

ABinding: TIdSocketHandle);

var

comm2: TcommBlock2;// TcommBlock2为记录型

userlt,

temp, iplt: string;

i: Integer;

begin

AData.ReadBuffer(Comm2, AData.Size); //从Comm2读取数据

if comm2.downlineflag = 'downline' then

begin //如果字符数组comm2中的downlineflag值为downline

userlt := 3c6983eadd88d0d232d46a04; //把3c6983eadd88d0d232d46a04存入变量userlt

iplt := comm2.ip;//把comm2. ip存入变量iplt

temp := userlt + '' + #9 + '' + iplt;

for i := 0 to lstip.Items.Count - 1 do

begin

if lstip.Items.Strings[i] = temp then

begin //temp里面是已经下线了的用户名和用户IP

lstip.Items.Delete(i)[4];

//如果ip列表中有和temp相同的值就删除(收到对方下线广播,删除对应的用户名和用户IP)

if userlt <> '' then

begin

mmoresv.Lines.Add('!!!地址为' + '[' + iplt + ']' + '''

第四章模块的实现代码

红河学院本科毕业论文(设计)

的用户' + '[' + userlt + ']' + '在' + edttime.Text +

'时下线!!!');//提示对方下线

lbluplinecount.Caption

:=IntToStr(strToint(lbluplinecount.Caption) - 1);//在线人数-1 end;

end;

end;

end else

begin

userlt := 3c6983eadd88d0d232d46a04;

iplt := comm2.ip;

if lstip.Items.IndexOf(userlt + '' + #9 + '' + iplt) = -1 then //避免IP列表中的IP重复的判

begin

lstip.Items.Add(userlt + '' + #9 + '' + iplt);

end;

end;

end;

4.2 聊天消息收发流程的实现代码

此代码实现聊天消息收发流程,其流程图为图3-3

procedure TFormmain.btnsendClick(Sender: TObject)[1];

//聊天消息发送的过程

var

Comm: TCommBlock;//记录型数组的定义

begin

if udpct1.Host = '' then

begin

本文来源:https://www.bwwdw.com/article/7e8q.html

Top