网络编程实训报告-TCP聊天程序

网络编程实训报告-TCP聊天程序

ID:41556384

大小:510.97 KB

页数:38页

时间:2019-08-27

网络编程实训报告-TCP聊天程序_第1页
网络编程实训报告-TCP聊天程序_第2页
网络编程实训报告-TCP聊天程序_第3页
网络编程实训报告-TCP聊天程序_第4页
网络编程实训报告-TCP聊天程序_第5页
资源描述:

《网络编程实训报告-TCP聊天程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、郑州轻工业学院实训报告实训名称:网络聊天程序指导教师:姓名:学号:班级:提交日期:1.实训目的通过开发一款网络聊天程序,熟练掌握多线程编程技术和TCP应用编程技术。通过本实训,应达到如下目标:•理解委托的概念,掌握线程之间通过委托与控件交互的方法。•理解异常处理的机制,掌握异常处理语句的用法。•理解线程的概念,掌握多线程编程的一般方法。•掌握基于TCP的应用编程技术。2.实训题目使用C#编程语言,开发一款网络聊天程序,玩家通过客户端登陆远程的服务器,登陆成功后可以与其他在线的玩家通信,如下图所示。1.功能描述1.管理员可以启动停止服务器,服务器可以显示当前的在线人数。2.玩家可以登陆服务器;登

2、录后的玩家可以与其它在线的玩家聊天;在线玩家关闭客户端即退岀登录。3.用户可以注册账号登陆服务器,注册即可实现永久登陆。4.需求分析根据功能描述可知,网络聊天程序的系统结构图如下所示。5.设计说明服务器界面如下:ServerStart当前在线用户数:0客户端的登陆界面如下:■陆M皿用户名:IClassic密码:飞卜;4验客户端的注册界面如下:客户端的聊天窗口如下:*6.源代码6.1服务器端User类在Server_54i3O7iioii4项目屮添加User类。User类的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.L

3、inq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Net.Sockets;usingSystem」O;namespaceServer_54i3O7iioii4{publicclassUserpublicstringuserName;publicTcpCIientdient;publicBinaryReaderbReader;publicBinaryWriterbWriter;publicUser(TcpClientclient){this.client=dient;Networkstreamns=dient・GetStre

4、am();bReader=newBinaryReader(ns);bWriter=newBinaryWriter(ns);}publicvoidClose(){bReader.Close();bWriter.Close();client.Close();}publicvoidSend(stringmessage)bWriter.Write(message);bWriter.Flush();}catch(Exceptionex){throwex;}publicstringReceiveQtry{returnbReader.ReadString();}catch(Exception){throw;

5、}UserList类在项目中添加UserList类。UserList类的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceServer_54i3O7iioii4{publicclassUserList{publicListlist;publicUserList(){list=newList();}publicvoidAddUser(Useruser){list.Add(user);}

6、publicvoidRemovellser(Useruser){user.Close();list.Remove(user);}publicvoidRemoveAIIUser(){for(inti=list.Count-i;i>=o;i-){RemoveUser(list[i]);}publicvoidSendToAIIUser(Useruser,stringstr)//给所有人发消息{string[]split=str.SplitC;);//把接收的字符串分离if(split[o]=="login")//判断是否为新登陆foreach(Useruinlist)//如果为新登陆,从用户集合获取

7、每一个登陆用户{u.Send(str);//给每个用户发送新用户登陆的消息u.Send(”logirV+u.userName);if(u.userName!=split[i]){user.SendC'login,"+u.userName);〃不会给自己发送}else{foreach(Useruinlist)//如果不是新用户登陆信息,则给除自己外每个用户发送消息{if(u.userName!=sp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。