實验八基于TCP的网络聊天室的设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
實验八基于TCP的网络聊天室的设计

PAGE PAGE 1 实验八 基于TCP的网络聊天室的设计 1 实验目的 (1)掌握通信规范的制定及实现。 (2)练习较复杂的网络编程,能够把协议设计思想应用到现实应用中。 2 实验内容 (1)制定通信规范。 (2)设计界面如下: 1 服务器端 2 客户端 (3)设计思路: ① TCP/IP数据通信 “聊天”消息传输格式 客户机 -? 服务器 (ⅰ)传输“用户名” STX+1+用户名+ETX (ⅱ) 悄悄话 STX+2+用户名+”,”+内容+ETX (ⅲ) 对所有人说 STX+3+内容+ETX 服务器-? 客户机 (ⅰ)首次传输在线用户名 STX+1+用户名+ETX (ⅱ)传输新到用户名 STX+2+用户名+ETX (ⅲ)传输离线用户名 STX+3+用户名+ETX (ⅳ)传输聊天数据 STX+4+内容+ETX (注:STX为CHR(2),ETX 为CHR(3)) ②服务器端 (ⅰ) 定义一个动态数组存储连接用户。定义一个全局变量存储连接用户的元素个数。 (ⅱ) 用一个使用UDP协议的SOCKET套接字完成发送服务器IP地址。 在该控件的数据接收事件中发送服务器IP地址 (ⅲ) 用一个使用TCP协议的SOCKET套接字数组完成TCP连接及数据发送和接收,处理它的连接请求事件。 (ⅳ)SOCKET套接字的数据到达事件中首先接收数据到一个变量中,然后从这个变量中逐个提取消息,并对每个消息判断消息类型及做相应处理: case 类型1 ……传输“用户名” 修改用来存储连接用户的元素个数的数组 向所有在线用户发送该用户名消息 向该用户发送所有在线用户名的消息 case 类型2 ……悄悄话 向源和目标用户发送消息 case 类型3 ……对所有人说 向所有在线用户发送消息 (ⅴ) 服务器端的断开连接事件中 修改存储连接用户的元素个数的数组,卸载此控件,向所有在线用户发送消息离线。 ③ 客户端 (ⅰ) 添加一个SOCKET套接字,窗体加载时使用UDP协议,发广播数据报;等待接收到服务器主机地址后使用TCP协议完成连接及数据传送。 (ⅱ) 在客户端的数据到达事件中接受数据,如果客户端协议使用的是UDP协议,关闭客户端连接,重新设置客户端的协议、远程端口号、本地端口等参数,再调用连接方法请求连接,输入用户名,连接成功时发送用户名消息。否则,从接受的数据字符串中逐个提取消息,并对每个消息判断消息类型及做相应处理: case 类型1 ……首次传输在线用户名 将用户名加入到用户列表中; case 类型2 ……首次传输在线用户名 将用户名加入到用户列表中; 在聊天内容中添加该用户名加盟; case类型3 ……传输离线用户名 从用户列表中删除该用户名 在聊天内容中添加该用户名退出; case类型4 ……传输聊天数据 在聊天内容中添加聊天数据; (ⅲ) 在命令按纽触发事件中发送聊天内容 根据用户列表中的当前用户决定消息类型,并发送聊天数据。 3 实验性质 设计性实验

文档评论(0)

xznh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档