网络聊天室实现报告.docx一、 背景知识
在传统生活里,人们利用写信、电话等方式联络,但此类方式周期缓慢, 呆板且不可
靠。在这个信息极其发达的时代, 随后我们可以用来进行信息交流的方法日益增多, 比如电
报、电话、电子邮件、 OICQ等通讯手段,但是这些或者不方便或者有局限性或者有费用的 问题。
近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生 活的方方面面,使得人们能以更低廉的价格, 开发出更方便、更实用的网络工具。各种在线
服务系统,更是深刻的影响了人们的联系和交流方式, 使得人们可以在远隔千里之遥随时通
讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。
网络聊天室凭借其友好的外观、强大的功能、使用的便利、联系的及时等特点博得现代 人的青睐,其应用的市场十分广阔。本系统使用的是 C/S模式,使用C#进行聊天室的设计
与开发。
本文主要介绍了所应用到的技术的基础知识, 并探讨了建立聊天室的设计思想、 方法与
功能实现流程图。本文所实现的聊天室具有良好的人机交互界面、 合理的数据库结构可以实
现发言、自动显示所在聊天室的成员等交互功能, 经过测试调试,证明可实际应用。下图为
网络聊天室的主界面
13:30 IC
201^/04/:4i 13 30 IE
2OH/04/14 13:30 37
0 I砖T
图1网络聊天室主运行界面图
0
.1
_]
01.
5 芒
1
□ O
^*--(睜 I -Is
二、核心算法思想
实现一个基于 Socket的简易的聊天室,实现的思路如下:
聊天室服务器端启动服务器时,将创建侦听套接字,创建用户列表,创建并启动侦听线
程。用户登录时,将创建套接字,与服务器直接连接,并创建客户端接收线程。服务器端侦 听到有用户上线后,将创建新的用户节点, 并在主界面上显示用户上线, 发送新的用户列表。
客户端发送信息时,将要发送的内容进行发送。 服务器端发送信息时,如果是发送给所有人, 就遍历用户链表,如果是发送给某个用户,先在链表中找到该节点,再发送信息。 服务器端
和客户端接收信息时,先读取聊天信息标识,做出判断后,依次读取信息,处理信息,并在 主界面上显示,服务器端还要将准备好的信息发送给指定的用户。
开启客户端主界面后, 就会启动文件接收侦听线程, 如果有用户发送文件至此, 将会有
信息提示,确定接收后,将启动文件接收线程,对方用户端将启动文件发送线程。
服务器端侦听到有用户下线后, 将删除该用户节点, 并在主界面上显示用户下线, 发送 新的用户列表。服务器端停止服务后, 也会向客户端发送服务器已关闭的信息, 客户端将不
再可以聊天。
程序的结构:多个客户端 +一个服务端,客户端都是向服务端发送消息,然后服务端转 发给所有的客户端,这样形成一个简单的聊天室功能。
实现的细节:服务端启动一个监听套接字。 每一个客户端连接到服务端, 都是开启了一
个线程,线程函数是封装了通信套接字, 来实现与客户端的通信。多个客户端连接时产生的
通信套接字用一个静态的 Dictionary保存。下面讲述几个重要概念:
套接字基本概念:
套接字是通信的基石,是支持 TCP/IP协议的网络通信的基本操作单元。可以将套接字
看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界
面。套接字存在于通信域中, 通信域是为了处理一般的线程通过套接字通信而引进的一种抽
象概念。套接字通常和同一个域中的套接字交换数据 (数据交换也可能穿越域的界限, 但这
时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用 In ternet协议簇来进
行通信。
套接字工作原理:
要通过互联网进行通信, 你至少需要一对套接字, 其中一个运行于客户机端, 我们称之
为ClientSocket,另一个运行于服务器端,我们称之为 ServerSocket。
根据连接启动的方式以及本地套接字要连接的目标, 套接字之间的连接过程可以分为
三个步骤:服务器监听,客户端请求,连接确认。
所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连 接的状态,实时监控网络状态。
所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的
套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字, 指出服务器端套
接字的地址和端口号,然后就向服务器端套接字提出连接请求。
所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请
求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述, 连接就建立
网络聊天室实现报告 来自淘豆网m.daumloan.com转载请标明出处.