摘要21世纪人类进入了一个以网络计算机为中心的信息主导型时代,现在人们可以使用计算机在瞬间迅速地处理和传递大量信息。网络的快速发展使得信息交流的速度和方式发生了巨大的变化,人们已经越来越明显地看到了计算机网络带来的社会生活方面的巨大变革。随着互联网技术的飞速进步,有关网络的技术层出不穷,网络聊天系统也成为了一种深受大众喜爱、应用广泛的工具。网络聊天是互联网上一种非常普及的应用,文中以.NET平台作为开发工具,使用Socket作为应用程序开发模型,可方便服务器与客户端建立连接,数据传输和断开连接。此外,在开发的过程中还采用了多线程技术,以完成客户进程间的调度,实现多用户操作。文章中设计了一个简单的桌面聊天系统,包括服务器端和客户端两个部分,服务器和客户端之间通过Socket编程技术实现建立连接的过程,并进行通信。服务器端主要包括如下功能:显示登陆服务器主机及端口号,记录登陆用户并管理用户基本信息。客户端分为用户登陆和聊天两个子模块,两个模块包括如下功能:显示服务器端口、用户登陆、管理用户聊天记录、显示用户状态和私聊模式。关键词:网络聊天系统,服务器端,客户端,Socket,多线程ABSTRACTThe21stcentury,mankindhasenteredainformation-orientederaofnetworkcomputerasthecenter,nowpeoplecanusethecomputerrapidlyprocessingandtransmistinginformationinaninstant.Therapiddevelopmentofnetworkmakestheexchangeofinformation’rateandmannerhastakenplacetremendouschanges,itismoreandmoreevidentthatenormouschangesofthesociallifebroughtaboutbythecomputernetworks.Astheinternetisdevelopingrapidly,thetechnologyonnetworkemergesoneanotherinstantly.Thenetworkchatsystemisalsobecomingapopular,widely-usedtool.Networkchatontheinternetisaverypopularapplication,inthetext,weuse.NETplatformasadevelopmenttool,andsocketastheapplicationdevelopmentmodel,tofacilitatetheestablishmentoftheclientandserverconnectivity,datatransmissionanddisconnect.Inaddition,intheprocessofdevelopingalsousesthemulti-threadedtechnologytocompletetheprocessforscheduling,andmulti-useroperation.Thearticledesignsasimpledesktopchatsystem,includingserverandclientintwoparts,betweentheclientandserverthroughSocketprogrammingtechnologytoconnecttheprocess,andcommunications.Theserverendmainlyincludesthefollowingfunctions:showinglandingserverhostandportnumber,userslogrecordsandmanageuserbasicinformation.Thecustomerendmodulewasdividedintotwopiecesofmodule,loginingandchating,whichincludethefollowingfunctions:showingserverport,logining,themanagementofuserchats,showinguser’sstateandprivatemodel.Keywords:NetworkChatSystem,theserverend,theclientend,Socket,multi-threadingtechnology目录第1章引言.................................错误!未定义书签。1.1课题的背景及意义.................................错误!未定义书签。1.2课题的研究现状...................................错误!未定义书签。1.3本文的组织方式....................................................1第2章关键技术及开发工具...................错误!未定义书签。2.1TCP/IP协议和Socket简介.........................错误!未定义书签。2.1.1TCP协议简介.................................错误!未定义书签。2.1.2端口简介.....................................错误!未定义书签。2.1.3名称空间.....................................错误!未定义书签。2.1.4Socket编程技术..............................错误!未定义书签。2.2多线程技术.......................................错误!未定义书签。2.3开发工具介绍.....................................错误!未定义书签。第3章网络聊天系统分析.....................错误!未定义书签。3.1系统实现目标及基本原理...........................错误!未定义书签。3.2需求分析.........................................错误!未定义书签。3.2.1功能需求分析.................................错误!未定义书签。3.2.2性能需求分析.................................错误!未定义书签。3.3系统体系结构.....................................错误!未定义书签。第4章系统设计.............................错误!未定义书签。4.1系统模块分析.....................................错误!未定义书签。4.2服务器端的设计...................................错误!未定义书签。4.3客户端的设计.....................................错误!未定义书签。第5章系统实现.............................错误!未定义书签。5.1服务器端的实现...................................错误!未定义书签。5.1.1服务器初始化.................................错误!未定义书签。5.1.2建立与客户端连接.............................错误!未定义书签。5.1.3与客户端通信.................................错误!未定义书签。5.1.4向客户端发送命令.............................错误!未定义书签。5.2客户端的实现.....................................错误!未定义书签。5.2.1登陆子模块的实现.............................错误!未定义书签。5.2.2客户端聊天子模块的实现........................................3结论.......................................错误!未定义书签。参考文献.....................................错误!未定义书签。致谢.......................................错误!未定义书签。11.3本文的组织方式本文对网络聊天系统进行了详细的分析研究,并采用当今比较主流的技术进行了设实现计。本文共有5章。第1章引言主要是给出课题的研究背景、研究的现状,并且概括了论文主要内容。第2章关键技术及开发工具介绍了聊天系统所采用的关键技术,并对系统开发工具进行了简单的介绍。第3章系统分析与设计首先介绍系统实现的基本原理,给出了要实现的目标并对其进行需求分析,并重点给出了系统的体系结构。第4章系统详细设计首先对系统的功能模块进行划分,并着重给出了系统的详细设计方案。第5章系统实现针对系统功能模块分别进行实现,包括服务器部分和客户端部分。总结对所做的研究和设计进行总结。最后附上致谢和参考文献!2本聊天系统的总体框架如图4.1所示:图4.2服务器端程序流程图开始初始化系统建立与客户端连接处理用户请求,进行数据通信结束token[0]=exitYN网络聊天系统服务器客户端显示IP及端口在线用户列表用户状态用户状态用户聊天在线用户列表私聊模式登陆模块3}图5.4用户沈亚坤的初始窗口5.2.2客户端聊天子模块的实现在ChatClient项目中将Form1.cs重命名为ChatClientForm.cs,为了使用Socket对象和Thread对象,在代码文件中加入名字空间System.Net、System.Net.Sockets和System.Thread的引用。当加载窗体时,便会进入ChatClientForm_Load处理程序,在ChatClientForm_Load处理程序中,首先显示用户登录窗口,如图5.3所示。如果登录成功,那么获取与服务器的连接并得到与服务器数据交互的流通道,向服务器发送CONN请求命令,同时启动一个新的线程用于响应从服务器发回的信息(在方法ServerResponse()中实现)。ServerResponse()方法用于和服务器进行数据通信,主要是接收从服务器发回的信息,根据不同的命令,执行相应的操作。当选中“悄悄话”复选框时,便会进入priCheckBox_CheckedChanged处理程序。用户进行私聊时的程序流程图如图5.5所示:4图5.5私聊流程图在priCheckBox_CheckedChanged处理程序中主要对privatemode布尔属性进行设置,具体代码如下:privatevoidpriCheckBox_CheckedChange(objectsender,System.EventArgse){If(priCheckBox.Checked){Privatemode=true;}Else{Privatemode=false;}}当单击“发送”按钮时,便会进入btnSend_Click处理程序。在btnSend_Click处理程序中,如果privatemode布尔属性值为false(说明不是私聊),将CHAT命令发送给服务器;否则(为私聊),将PRIV命令发送给服务器,注意命令格式一定要与服务器端的命令格式一致,用户私聊模式如图5.6所示。选择“悄悄话”设置布尔值if(priva