网络应用编程课程设计.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文档。上传文档
查看更多
网络应用编程课程设计.doc

郑州轻工业学院 课程设计报告 课程设计名称:C#网络应用编程课程设计 指导教师: 姓名: 学号: 班级: 提交日期:2015.7.2 1?目的 通过开发一款网络聊天程序,熟练掌握多线程编程技术和TCP应用编程技术。通 过本实训,达到如下目标: 1) 理解委托的概念,掌握线程之间通过委托与控件交互的方法。 2) 理解异常处理的机制,掌握异常处理语句的用法。 3) 理解线程的概念,掌握多线程编程的一般方法。 4) 掌握基于TCP的应用编程技术。 题目 使用C#编程语言,幵发一款网络聊天程序,玩家通过客户端登陆远程的服务 器,登陆成功后可以与其他在线的玩家通信。 功能描述 1) 当服务器开启服务后,允许任何一个玩家通过客户端登陆服务器。 2) 每当有玩家登录或退出时,每一个在线的玩家都会刷新玩家列表。 3) 当玩家登陆成功后,可以通过服务器端与任何一个在线的玩家聊天 需求分析 =- 客户端 逼信接口 =o 服务瑞 )用户接口 3= 用户築合J 定义数据字典如下: 用户(User):在网络聊天程序中,用户是己登陆的玩家。用户具有玩 家的用户名、客户端与服务器之间建立的Tc连接等属性。在程序 中,用户负责向服务器发送和接收数据。 5.设计说明 根据需求分析可知,管理员可以启动停止服务器;玩家可以登陆服务器;登录 后的玩家可以与其它在线的玩家聊天;在线玩家关闭客户端即退出登录。 客户端发送给服务器端的命令有如下3种: login,用户名:玩家请求登陆服务器。玩家点击“登陆”按钮后,就会发 送login命令,其中的用户名就是请求登陆玩家的用户名。 logout,用户名:玩家请求退出服务器。玩家关闭客户端的主窗体后,就 会发送logout命令,其中的用户名就是请求退出玩家的用户名。 talk,用户名1,用户名2,信息:玩家发出聊天信息。玩家点击“发送 按钮后,就会发送talk命令,其屮的用户名1是发出信息的玩家,用户名 2是接收信息的玩家。 服务器端发送给客户端的命令有如下4种: login,用户名:服务器接受到login命令后,检査用户集合,如果没有重名 的在线用户,则给所有用户发送login命令,通知玩家更新用户列表。 logout,用户名:服务器接收到logout命令后,向所有在线用户发送 logout命令,通知其他玩家更新用户列表。 talk,用户名1,用户名2,信息:服务器接收到talk命令后,先给用户2发送 talk命令;发送成功后,再给用户1发送talk命令,通知用户1,聊天信 息发送成功。 6.源代码 1、 服务器源代码: User 类: using System; using System.CoIlections.Generic; using System.IO; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ChatServer { public class User { public Binary Reader br { get; private set; } public B inaryWriter bw { get; private set; } private string userName; private TcpClient client; public User(TcpClient client,bool isTask) this-client = client; NetworkStream networkstream = client.GetStream(); br = new B inaryReader(networkStream); bw = new BinaryWriter(networkStream); if (isTask) { Task.Run(() = ReceiveFromClient()); } else { Thread t 二 new Thread(ReceiveFromClient); t.Start(); } } public void Close() { br.Close(); bw.Close(); client.Close(); } ///〈summary〉处理接收的客户端数据〈/summary〉 public void ReceiveFromClient() { while (true) { string receiveString = null; try { receiveString = br.ReadStringO; } catch { CC.RemoveUse

文档评论(0)

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

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

1亿VIP精品文档

相关文档