ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:216.70KB ,
资源ID:7536167      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7536167.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Socket的聊天室C版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Socket的聊天室C版.docx

1、基于Socket的聊天室C版 公司内部档案编码:OPPTR-OPPT28-OPPTL98-OPPNN08基于Socket的聊天室C版一、服务器/客户端聊天室模型1.首先启动聊天室服务器,使得TcpListener开始监听端口,此时TcpListener会进入Pending状态,等待客户端连接;2.其次,当有客户端连接后,通过AccepSocket返回与客户端连接的Socket对象,然后通过读写Socket对象完成与聊天室客户端的数据传输。聊天室客户端成功启动后,首先创建一个Socket对象,然后通过这个Socket对象连接聊天室服务器,连接成功后开通Socket完成数据的接收和发送处理。二、系

2、统功能设计本设计为一个简单的聊天室工具,设计基本的聊天功能,如聊天、列表维护等。系统主要为两大块:聊天室服务器及聊天室客户端。服务器界面设计如下:客户端界面设计如下:三、聊天协议的应答A网络B主机与主机通信主要识别身份(标识设备用IP)及通信协议网络应用程序端口号接收数据注:地址是总机,端口号是分机(传输层) 2.端口号为16位二进制数,范围0到65535,但实际编程只能用1024以上端口号Socket编程首先,我们了解常用网络编程协议。我们用得最多的协议是UDP和TCP,UDP是不可靠传输服务,TCP是可靠传输服务。UDP就像点对点的数据传输一样,发送者把数据打包,包上有收信者的地址和其他必

3、要信息,至于收信者能不能收到,UDP协议并不保证。而TCP协议就像(实际他们是一个层次的网络协议)是建立在UDP的基础上,加入了校验和重传等复杂的机制来保证数据可靠的传达到收信者。一个是面向连接一个无连接,各有用处,在一些数据传输率高的场合如视频会议倾向于UDP,而对一些数据安全要求高的地方如下载文件就倾向于TCP。Socket网络应用程序电话机访问通信协议聊天协议的应答:聊天状态:CLOSED和CONNECTED状态执行CONN命令后进入CONNECTED状态,执行下列命令:CONN:连接聊天室服务器JOIN:加入聊天(通知其他用户本人已经加入聊天室服务器)LIST:列出所有的用户(向客户端

4、发送全部的登录用户名字)CHAT:发送聊天信息(公开的聊天信息)PRIV:进行私聊(三个参数:私聊信息用户;接收私聊信息用户;发送信息)EXIT:客户端向服务器发送离开请求;QUIT:退出聊天,服务器向客户端发送退出命令(执行QUIT命令聊天状态变为CLOSED)四、系统实现服务器协议解析:当有客户端连接聊天室服务器后,服务器立刻为这个客户建立一个数据接收的线程(多用户程序必备)。在接收线程中,如果收到聊天命令,就对其进行解析处理,服务器可以处理五种命令:CONNLISTCHATPRIVEXIT。 服务器接收到CONN命令,就向其他用户发送JOIN命令告诉有用户加入,然后把当前的全部用户信息返

5、回给刚刚加入的用户,以便在界面上显示用户列表。当接收到EXIT命令后,就清除当前用户的信息,然后向其他用户发送QUIT命令,告诉其他用户退出了,这些用户的客户端把离开的用户从用户列表中删除。聊天室客户端的协议解析:当客户端连接到服务器后,服务器立刻建立一个数据接收的独立线程。在接收线程中,如果收到了聊天命令,就对其进行解析处理。聊天室客户端一共处理的命令有五种:OKERRLISTJOINQUIT命令。五、程序设计(代码)服务器端设计:引入网络操作命名空间、;线程处理命名空间第一步:界面设计及类与相关成员的定义对界面进行设计(简单)对内部函数进行设计(要编写一个独立的类即Client类,封装了客

6、户端的信息与连接,每一个客户进入聊天室,就创建一个Client对象,用于保存该用户的信息并接收用户数据和发送信息到客户端)几个重要的类:TcpListener类(服务器套接字创建)、Socket类internal static Hashtable clients = new Hashtable();ddressList; if 1) return ; return Addresslist0.ToString(); ddressList; if 2) return ; return Addresslist1.ToString(); oString() + |; return Rtn; publi

7、c void updateUI(string msg) + n); private void Form1_FormClosing(object sender, FormClosingEventArgs e) = false; ; CONNoUpper() = OK) oUpper() = ERR) add(命令执行错误: + tokens1); else if (tokens0 = LIST) oUpper() = OK) oUpper() = ERR) add(命令执行错误: + tokens1); else if (tokens0 = LIST) /此时从服务器返回的消息格式:命令标志符L

8、IST|用户名1|用户名2|。(所有在线用户名) /add(“获得用户列表”),更新在线用户列表 for (int i = 1; i -1) add(用户: + tokens1 + 已经离开); else /如果从服务器返回的其他消息格式,则在ListBox控件中直接显示 / = msg + n; add(msg); /关闭连接 (); catch add(网络发生错误); /设置字体颜色 /向显示消息的rtbMsg中添加信息是通过add函数完成的 private void add(string msg) if (! = color; = msg + n; private void btnEx

9、it_Click_1(object sender, EventArgs e) if (true) string message = EXIT| + + |; /将字符串转化为字符数组 byte outbytes = (outbytes, 0, ; = CLOSED; = true; /将“EXIT”命令发送给服务器,此命令格式要与服务器端的命令格式一致 private void Form1_FormClosing(object sender, FormClosingEventArgs e) / btnExit_Click_1(sender,e); btnExit_Click_1(sender, e); private void btnColor_Click(object sender, EventArgs e) ColorDialog colorDialog1 = new ColorDialog(); = if () = & != = ; color = ; 六、程序测试效果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1