局域网QQ制作毕业设计Word文档格式.docx
- 文档编号:20864821
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:20
- 大小:101.97KB
局域网QQ制作毕业设计Word文档格式.docx
《局域网QQ制作毕业设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《局域网QQ制作毕业设计Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
目录
摘要I
第一章引言1
1.1课题背景及意义1
1.2本次设计的主要工作2
1.2.1技术要求2
1.2.2系统的基本功能2
第2章需求和可行性分析3
2.1需求分析3
2.1.1基本功能3
2.1.2性能要求3
2.1.3时间要求3
2.2可行性研究4
2.2.1市场可行性分析4
2.2.2技术可行性分析4
第3章相关技术介绍5
3.1WIN32编程原理5
3.2TCP/IP协议5
3.3TCP/IP通信协议的安装6
3.4协议选择的原则7
3.4.1所选择的协议要与网络结构、功能一致7
3.4.2尽量选用一种协议7
3.4.3保持协议的一致性7
3.5线程编程技术8
第4章系统总体设计9
4.1用户界面设计9
4.1.1用户界面简介9
4.1.2用户界面模块详细设计10
4.1.3聊天界面模块详细设计11
4.1.4接收信息模块详细设计13
4.2功能模块划分15
4.3体系结构设计16
结束语17
致谢18
参考文献19
第一章引言
1.1课题背景及意义
当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。
随着网络的普及化,网络作为人们相互间沟通与交流联系的现代化工具日益重要,可以说现在人们的生活已经离不开网络。
在现实生活中人们可以通过多种手段与家人亲戚朋友交流通讯,像电话,电子邮件等。
但这些手段都有些缺点,要么费用太高,要么实时性不强,要么1次只能和1位好友进行交流。
于是这就需要1种便宜,快速,能同时与多个好友进行通讯的网络工具的出现,而网络聊天工具就满足了这些需求,填补了这个空白。
在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。
聊天室程序可以说是网上最简单的多点通信程序。
一个简单的聊天室,从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。
广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟,这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是利用各种平台上的网络通信接口,建构基于TCP/IP,或者UDP协议的软件产品。
局域网文件传输及聊天工具平台,是在局域网内部使用的,用户之间用来交流和文件共享的一个工具,一般都具有文本聊天和文件传输功能。
一些局域网软件因其使用简单,系统资源消耗少等优点,成为各企事业单位等的局域网内广泛应用的软件之一。
网络的飞速发展使网络应用程序的开发地位显的越来越重要,而网络应用程序的开发和传统应用程序的开发在思想和实现上有很大的区别,随着网络技术和数据库管理系统的发展,C/S体系结构在软件的开发中越来越流行。
因为这种结构的应用软件可以充分发挥网络的作用和数据库系统的优势,以满足人们各种应用的需求。
1.2本次设计的主要工作
1.2.1技术要求
聊天工具的开发主要用到了网络通信技术、windows的多线程技术、文件传输技术、时钟技术、IO技术。
该聊天软件使用c#语言由VS2008开发的基于Windows的winform通讯工具,可以实现点对点聊天、广播聊天、一对多聊天以及文件的传输。
该聊天工具用到了多线程的设计,因此线程之间的同步是一大关键之处。
由于系统采用客户机/服务器结构,客户端与客户端以及客户端与服务器端需要传送一些控制消息。
1.2.2系统的基本功能
1、系统UI层
2、系统聊天层
3、系统文件传输层
4、系统多播层
5、我在该项目中负责的主要工作:
系统文件传输层
第2章需求和可行性分析
2.1需求分析
2.1.1基本功能
(1)程序启动之后要求输入你想要使用的昵称,输入完之后点击进入。
(2)进入之后可以看到哪些机器在线,用户列表上显示的是对方所使用的昵称。
(3)一旦局域网内有新机器上线了,会及时更新用户列表。
(4)列表上的用户以按钮形式显示,当点击想要与之聊天的用户按钮时,弹出对话框,在输入框中编辑要发送的聊天信息,并进行发送。
(5)当有人向我发送信息的时候,会自动弹出一个对话框,显示用户接收到的信息,对方昵称显示在标题栏中,并且可进行信息的回复。
2.1.2性能要求
首先要求程序的可靠性要高,能有效的应付种种意外情况,比如对方连接进来后,长时间未响应(未发送自己的昵称过来),在传输文件的过程中对方突然退出或突然掉线,要尽量的考虑周全这些意外情况,并向用户提交简单易懂清晰明白的提示信息
程序要具备良好的容错性,当用户进行非法操作时要给予警告,如果操作导致程序无法继续运行或者系统本身出现问题时,以最好的方式退出程序,避免发生程序假死现象。
源代码有好的可读性,开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。
要求程序对内存的占用尽可能的少,CPU使用率尽可能的低,最好在各种情况下都能保持10%以下的CPU使用率,传输文件速度尽量可观。
2.1.3时间要求
该项目作为毕业设计,选题时间是3月2号,在5月24号之前完成系统设计、编码等工作,在6月1号之前完成毕业设计论文初稿,6月7号之前最终完成论文。
2.2可行性研究
2.2.1市场可行性分析
现在的软件市场还不是一般的乱,每天都有各种各样的软件推出,各种质量,各种目的,如果推出这种软件工具类的产品,首先,免费是肯定的,现在也没有什么聊天工具是收费才能聊天的,这款软件的可行性在于局域网内的通信工具还没有出现垄断的现象,质量很好的话还是有些可能出头的,所以在逻辑细节设计算法设计方面要下非常大的功夫才行。
2.2.2技术可行性分析
首先,在搭建好开发所需要的软硬件平台后,一个完善合理的需求分析是软件开发前期工作中必不可少的,该系统用c#语言由VS2008开发的基于Windows的winform通讯工具,TCP应用编程提供的类(TcpListener,TcpClient,Socket)都是网络编程的好东西,基本应有的功能都可靠这些实现,再加上有获得巨大成功的通讯软件可以参考,所以这个程序的开发可行性在技术上是完全可行的。
第3章相关技术介绍
3.1TCP/IP协议
TCP/IP(TransmissionControlProtocol/InternetProtocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。
TCP/IP定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP是一个四层的分层体系结构。
高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。
低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。
TCP/IP(传输控制协议/网际协议)是异构网络互连的通信协议,通过它可以实现各种异构网络或异种机之间的互联通信。
TCP/IP已成为当今计算机网络最成熟、应用最广的互联协议。
Internet采用的就是TCP/IP协议,网络上各种各样的计算机上只要安装了TCP/IP协议,它们之间就能相互通信。
运行TCP/IP协议的网络是一种采用包(分组)交换网络。
TCP/IP协议是由100多个协议组成的协议集,TCP和IP是其中两个最重要的协议。
TCP和IP两个协议分别属于传输层和网络层,在Internet中起着不同的作用。
3.2UDP协议
UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理UDP数据包。
在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP协议的主要作用是将网络数据流量压缩成数据包的形式。
一个典型的数据包就是一个二进制数据的传输单位。
每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
在选择使用协议的时候,选择UDP必须要谨慎。
在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。
但是由于UDP的特性:
它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
3.3TCP应用编程
TCP是TransmissionControlProtocol(传输控制协议)的简称,是TCP/IP体系中的面向连接的传输层协议,在网络中提供全双工的和可靠的服务。
一旦双方建立了TCP连接,连接中的任何一方都能向对方发送数据并接收对方发来的数据。
发送数据时,程序员可以编写程序不断地将数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据流写入TCP的发送缓冲区中,然后TCP自动从发送缓冲区中取出一定量的数据,将其组成TCP报文段逐个发送给IP层,再通过IP层发送出去。
接收端从IP层收到TCP报文段后,将其暂时保存在接收缓冲区中,这时程序员就可以编写程序依次读取接收缓冲区中的数据,从而达到通信的目的。
利用TCP开发应用程序时,.NET框架提供两种工作方式,一种是同步(Synchronous)工作方式,一种是异步(Asynchronous)工作方式。
同步工作方式是指利用TCP编写的程序执行到发送、接收或监听语句时,在未完成工作前不再继续下面的工作,即处于阻塞状态,直到该语句完成相应的工作后才继续执行下一条语句;
异步工作则不论工作完成与否,都会继续往下执行。
例如:
接收数据时,在同步方式下,接收方执行到接收语句后将处于阻塞方式,只有接收到对方发来的数据后才继续执行下一条语句;
而如果采用异步方式,则接收方执行到接收语句后,无论是否接收到对方的数据,程序都会继续执行。
与同步工作方式和异步工作方式对应,利用Socket类进行编程时,系统也提供有相应的方法,分别称为同步套接字编程和异步套接字编程。
但是使用套接字编程比较复杂,涉及许多底层细节。
为了简化套接字编程,.NET框架又专门提供了两个类:
TcpClient类和TcpListener类。
由于这两个类与套接字一样分别有各自的同步和异步工作方式及其对应的方法,在编程时,三个类都可以使用。
因此为了简化起见,无论使用哪个类,我们都从工作方式上将其称为同步TCP和异步TCP,对应的编程方式就称为同步TCP编程和异步TCP编程。
注意:
这里的同步TCP与异步TCP仅仅是指工作方式,与线程间的同步不是一个概念。
线程间的同步是指不同线程或不同线程使用的某些资源具有先后关联的关系,它决定着逻辑执行顺序。
比如有A和B两个资源,实际应用中要求只有对资源A处理后才能处理资源B,就说资源A与资源B存在同步关系。
如果执行顺序不正确就会引发错误。
所以,线程间的同步关注的是一种逻辑关系。
而同步TCP和异步TCP则仅仅指编程中采用哪种工作方式,即从执行到发送、接收或监听语句时,程序是否是继续住下执行这个角度来说的。
]
从逻辑关系上看,无论是同步TCP编程,还是异步TCP编程,在实际应用中既可能要求不同线程间同步,也可能不要求同步。
3.4线程编程技术
一般来说,我们把正在计算机中执行的程序叫做"
进程"
(Process),而不将其称为程序(Program)。
所谓"
线程"
(Thread),是"
中某个单一顺序的控制流。
新兴的操作系统,如Mac,WindowsNT,Windows95等,大多采用多线程的概念,把线程视为基本执行单位。
线程也是Java中的相当重要的组成部分之一。
甚至最简单的Applet也是由多个线程来完成的。
在Java中,任何一个Applet的paint()和update()方法都是由AWT(AbstractWindowToolkit)绘图与事件处理线程调用的,而Applet主要的里程碑方法——init(),start(),stop()和destory()——是由执行该Applet的应用调用的。
单线程的概念没有什么新的地方,真正有趣的是在一个程序中同时使用多个线程来完成不同的任务。
某些地方用轻量进程(LightweightProcess)来代替线程,线程与真正进程的相似性在于它们都是单一顺序控制流。
然而线程被认为轻量是由于它运行于整个程序的上下文内,能使用整个程序共有的资源和程序环境。
作为单一顺序控制流,在运行的程序内线程必须拥有一些资源作为必要的开销。
例如,必须有执行堆栈和程序计数器。
在线程内执行的代码只在它的上下文中起作用,因此某些地方用"
执行上下文"
来代替"
。
多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:
主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。
比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这个数据或文件才能接收下一个消息。
在执行这个子函数过程中你什么也不能干。
但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。
第4章系统总体设计
4.1用户界面设计
4.1.1用户界面简介
图4.1局域网QQ登陆界面
当用户双击程序图标时应该正常启动程序,弹出登陆界面,如图4-1,然后输入你想使用的昵称后点击进入,便会进入到用户主界面如图4-2。
图4.2局域网QQ主界面
我们做的是仿QQ的聊天软件,所以也做了浮动窗体这个小功能,当鼠标移出窗体时窗体自动收缩,只露在外面一小部分,当鼠标移到那一点部分时,窗体又自动展开,图标显示在托盘内,指向图标点击鼠标右键弹出contextMenuStrip,有打开窗体和退出两个选项,用鼠标左键单击你想要交谈的用户按钮弹出聊天对话框,如图4-3。
图4.3局域网QQ聊天对话框
这就是聊天对话框,在上面你可以与对方交谈,互相传输文件。
4.1.2用户界面模块详细设计
图4.4用户界面
程序启动时会加载当前在线用户
privatevoidForm1_Load(objectsender,EventArgse)
{
label2.Text="
昵称:
"
+nicheng;
sm();
//让本机开始侦听,接受连接请求
zj();
//连入那些接受连接请求的主机
this.Location=newPoint(Screen.PrimaryScreen.WorkingArea.Width-5,0);
}
publicvoidzj()
listener=newTcpListener(8083);
listener.Start();
listener1=newTcpListener(8084);
listener1.Start();
//开始侦听8083端口负责聊天8084端口负责传输文件
thread=newThread(newThreadStart(chuangjian));
thread.IsBackground=true;
thread.Start();
publicvoidchuangjian()
while(true)
Sockets=listener.AcceptSocket();
//接受挂起的连接请求
Threaduu0=newThread(aczb);
uu0.Start(s);
publicvoidsm()//ping出局域网内在线的机子
try
for(inti=0;
i<
=255;
i++)
PingmyPing;
myPing=newPing();
myPing.PingCompleted+=newPingCompletedEventHandler(_myPing_PingCompleted);
stringipp=Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString();
intu=ipp.LastIndexOf("
."
);
stringii=ipp.Substring(0,u+1);
stringpingIP=ii+i.ToString();
myPing.SendAsync(pingIP,1000,null);
catch(SocketExceptionse)
publicvoid_myPing_PingCompleted(objectsender,PingCompletedEventArgse)
if(j==255)
czip();
//ping完后用arp–a获取局域网内在线机子的IP,向它们发出连接请求
j++;
4.1.3聊天界面模块详细设计
图4.5聊天界面
在输入框中输入内容,点击发送按钮进行聊天。
privatevoidbutton1_Click(objectsender,EventArgse)
byte[]buffer=newbyte[1024];
buffer=System.Text.Encoding.Default.GetBytes("
x"
+textBox1.Text);
//x是聊天信息的标识符
if(ar[0].ToString()=="
0"
)//判断本机是主机还是客户机,主机是”0”客户机是”1”
if(textBox1.Text!
="
)
s.Send(buffer);
if(panel3.Controls.Count>
0)//判断有没有要发送的文件
stringpp=null;
panel3.Controls.Count;
stringp="
*"
+panel3.Controls[i].Text+"
|"
+panel3.Controls[i].Tag.ToString()+"
;
pp+=p;
if(i==panel3.Controls.Count-1)
w"
+pp);
//w是传输文件的标识符
richTextBox1.AppendText("
你给["
+bu.Text+"
]发送了'
+panel3.Controls.Count+"
'
个文件\n"
elseif(ar[0].ToString()=="
1"
n.Write(buffer,0,buffer.Length);
0)
n.Write(buffer,0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 QQ 制作 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)