欢迎来到天天文库
浏览记录
ID:4143537
大小:1.88 MB
页数:25页
时间:2017-11-29
《基于socket的聊天室(c_版)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、服务器/客户端聊天室模型聊天室客户端�其他�聊天室客户端�笔记本�聊天室客户端�商用PC)服务器其他服务器1.首先启动聊天室服务器�使得TcpListener开始监听端口�此时TcpListener会进入Pending状态�等待客户端连接�2.其次�当有客户端连接后�通过AccepSocket返回与客户端连接的Socket对象�然后通过读写Socket对象完成与聊天室客户端的数据传输。聊天室客户端成功启动后�首先创建一个Socket对象�然后通过这个Socket对象连接聊天室服务器�连接成功后开通Socket完成数据的接收和发送处理。二、系统功能设计本设计为一个
2、简单的聊天室工具�设计基本的聊天功能�如聊天、列表维护等。系统主要为两大块�聊天室服务器及聊天室客户端。服务器界面设计如下�客户端界面设计如下�三、聊天协议的应答A—网络—B主机与主机通信主要识别身份�标识设备用IP�及通信协议网络应用程序——端口号——接收数据注�1.IP地址是总机�端口号是分机�传输层�2.端口号为16位二进制数�范围0到65535�但实际编程只能用1024以上端口号Socket编程首先�我们了解常用网络编程协议。我们用得最多的协议是UDP和TCP�UDP是不可靠传输服务�TCP是可靠传输服务。UDP就像点对点的数据传输一样�发送者把数据打包�包
3、上有收信者的地址和其他必要信息�至于收信者能不能收到�UDP协议并不保证。而TCP协议就像(实际他们是一个层次的网络协议)是建立在UDP的基础上�加入了校验和重传等复杂的机制来保证数据可靠的传达到收信者。一个是面向连接一个无连接�各有用处�在一些数据传输率高的场合如视频会议倾向于UDP�而对一些数据安全要求高的地方如下载文件就倾向于TCP。Socket————网络应用程序电话机————访问通信协议聊天协议的应答�聊天命令客户端服务器OK/ERR应答信号聊天状态�CLOSED和CONNECTED状态执行CONN命令后进入CONNECTED状态�执行下列命令�CONN:
4、连接聊天室服务器JOIN:加入聊天�通知其他用户本人已经加入聊天室服务器�LIST:列出所有的用户�向客户端发送全部的登录用户名字�CHAT:发送聊天信息�公开的聊天信息�PRIV:进行私聊�三个参数�私聊信息用户�接收私聊信息用户�发送信息�EXIT:客户端向服务器发送离开请求�QUIT:退出聊天�服务器向客户端发送退出命令�执行QUIT命令聊天状态变为CLOSED�四、系统实现服务器协议解析�当有客户端连接聊天室服务器后�服务器立刻为这个客户建立一个数据接收的线程�多用户程序必备�。在接收线程中�如果收到聊天命令�就对其进行解析处理�服务器可以处理五种命令�CO
5、NNLISTCHATPRIVEXIT。服务器接收到CONN命令�就向其他用户发送JOIN命令告诉有用户加入�然后把当前的全部用户信息返回给刚刚加入的用户�以便在界面上显示用户列表。当接收到EXIT命令后�就清除当前用户的信息�然后向其他用户发送QUIT命令�告诉其他用户退出了�这些用户的客户端把离开的用户从用户列表中删除。启动聊天服务器启动监听器等待接收客户端连接启动客户数据接收线程保持连接并且SocketServiceFlag为true�退出线程读取数据解析命令CONN命令LIST命令CHAT命令PRIV命令EXIT命令向全部用户发向接收者发送删除用户数据
6、送JOIN命令向当用户发送向当用户发送数据LIST命令CHAT命令向当用户发送向发送者发送向全部用户发LIST命令数据送QUIT命令休息200毫秒聊天室客户端的协议解析�当客户端连接到服务器后�服务器立刻建立一个数据接收的独立线程。在接收线程中�如果收到了聊天命令�就对其进行解析处理。聊天室客户端一共处理的命令有五种�OKERRLISTJOINQUIT命令。启动聊天室客户端SocketConnect启动客户数据接收线程Yes是停止标志吗�退出线程No读取数据解析命令QUIT命令其他情况OK命令ERR命令LIST命令JOIN命令删除用户数据命令执行成功命令执行
7、失败显示全部用户显示用户加入直接显示显示用户离开用户信息休息200毫秒五、程序设计�代码�服务器端设计�引入网络操作命名空间System.Net、System.Net.Sockets�线程处理命名空间System.Threading第一步�界面设计及类与相关成员的定义对界面进行设计�简单�对内部函数进行设计�要编写一个独立的类即Client类�封装了客户端的信息与连接�每一个客户进入聊天室�就创建一个Client对象�用于保存该用户的信息并接收用户数据和发送信息到客户端�几个重要的类�TcpListener类�服务器套接字创建�、Socket类internals
此文档下载收益归作者所有