欢迎来到天天文库
浏览记录
ID:6356894
大小:337.99 KB
页数:15页
时间:2018-01-11
《基于c#实现的聊天软件设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于c#实现的聊天软件基于c#实现的聊天软件设计报告基于c#实现的聊天软件目录一.作品设计概述:31.背景意义32.创新点3二.作品分析设计31.主要功能及分析32.层次结构及各层通信协议3三.作品主要功能使用说明及演示101.运行主界面:102.启动服务器113.开启客户端124.聊天通信功能说明:135.截图功能14四.结论15五.参考文献15基于c#实现的聊天软件一.作品设计概述:1.背景意义在网络信息技术高速发展的今天,传统的通信方式已然满足不了人们的需求。利用网络资源实现多机通信可以最大程度地满足人们对通信的需求,而不限制于距离地点。而如今流行着很多种网络聊天工具,如Q
2、Q,MSN等,都是集成的多功能聊天工具。所以,我利用这学期所学的关于C#的相关知识及网络资源,利用.NET平台实现了一个简单的聊天工具。具备了和聊天相关的基本功能,而开发这个软件的最大意义我认为在于巩固和加深对C#相关知识的学习。2.创新点我认为这款聊天软件的创新点在于,它除了实现了基本的聊天功能,如文本聊天,保存聊天记录,导出聊天记录,修改字体等,还实现了用户自定义的截图功能,更大程度的满足了用户对通信功能的需求。二.作品分析设计1.主要功能及分析(1)进行即时通信该功能主要指服务器和多个客户端进行即时通信。该功能实现的主要是文本传输。而对于发送即时消息的过程中,用户可以自定义
3、设置发送文本的字体大小,清空输入框,保存聊天记录,导出聊天记录等功能。只要成功与服务器端连接,可以实现多个客户端与服务器进行即时通信。(2)自定义截图功能该功能主要是模仿目前流行的聊天软件普遍具有的截图功能。用户可以利用该功能实现自定义窗口大小的截图并保存。更大程度满足了用户对通信的需求,方便了用户的操作。2.层次结构及各层通信协议层次结构可以大体分为服务器和客户端两大部分,下面对其进行具体说明:(1)服务器模块基于c#实现的聊天软件A.实现框图:服务器(sever)启动监听(TcpListener)停止服务(stop)等待/建立连接(TcpClient)收发数据(NetStre
4、am)FY主要类设计:(sever_tcp的设计)调用到的主要类及方法属性:1.线程类:ThreadStarThread(线程同步)2.IP地址:IPAddressIPAddress.Parse()3.监听:TcpListenernetStream4.信息传送(流):ReadWriteObject附上主要部分程序(利用多线程实现监听和建立通信连接部分)publicpartialclassserver_tcp:Form{privatevoidbuttonStart_Click(objectsender,EventArgse){//用于服务器要为多个用户服务,所以需要创建一个线程监听
5、客户端的连接要求基于c#实现的聊天软件ThreadStartts=newThreadStart(AcceptConnect);ThreadmyThread=newThread(ts);myThread.Start();buttonStart.Enabled=false;buttonStop.Enabled=true;}privatevoidAcceptConnect(){//获取本机所有IP地址IPAddresslocaladd=IPAddress.Parse("192.168.0.4");IPAddress[]ips=Dns.GetHostEntry(Dns.GetHostNa
6、me()).AddressList;foreach(IPAddresspinips){if(p.AddressFamily==System.Net.Sockets.AddressFamily.InterNetwork){localadd=p;break;}}listener=newTcpListener(localadd,51888);listener.Start();privatevoidReadCallback(IAsyncResultar){try{ReadWriteObjectreadWriteObject=(ReadWriteObject)ar.AsyncState;i
7、ntcount=readWriteObject.netStream.EndRead(ar);textBoxReceive.Invoke(setTextBoxCallback,string.Format("来自{0}{1}",readWriteObject.client.Client.RemoteEndPoint,System.Text.Encoding.UTF8.GetString(readWriteObject.readBytes,0,count))+"/n");if(isEx
此文档下载收益归作者所有