基于某c#实现地聊天软件设计报告材料

上传人:工**** 文档编号:472571370 上传时间:2023-09-18 格式:DOCX 页数:20 大小:333.51KB
返回 下载 相关 举报
基于某c#实现地聊天软件设计报告材料_第1页
第1页 / 共20页
基于某c#实现地聊天软件设计报告材料_第2页
第2页 / 共20页
基于某c#实现地聊天软件设计报告材料_第3页
第3页 / 共20页
基于某c#实现地聊天软件设计报告材料_第4页
第4页 / 共20页
基于某c#实现地聊天软件设计报告材料_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《基于某c#实现地聊天软件设计报告材料》由会员分享,可在线阅读,更多相关《基于某c#实现地聊天软件设计报告材料(20页珍藏版)》请在金锄头文库上搜索。

1、word基于c#实现的聊天软件设计报告目录一作品设计概述:31.背景意义32.创新点3二作品分析设计31.主要功能与分析32.层次结构与各层通信协议3三作品主要功能使用说明与演示101.运行主界面:102.启动服务器113.开启客户端124.聊天通信功能说明:135.截图功能14四结论15五参考文献15一 作品设计概述:在网络信息技术高速开展的今天,传统的通信方式已然满足不了人们的需求。利用网络资源实现多机通信可以最大程度地满足人们对通信的需求,而不限制于距离地点。而如今流行着很多种网络聊天工具,如QQ,MSN等,都是集成的多功能聊天工具。所以,我利用这学期所学的关于C#的相关知识与网络资源,

2、利用.NET平台实现了一个简单的聊天工具。具备了和聊天相关的根本功能,而开发这个软件的最大意义我认为在于巩固和加深对C#相关知识的学习。我认为这款聊天软件的创新点在于,它除了实现了根本的聊天功能,如文本聊天,保存聊天记录,导出聊天记录,修改字体等,还实现了用户自定义的截图功能,更大程度的满足了用户对通信功能的需求。二 作品分析设计1进展即时通信该功能主要指服务器和多个客户端进展即时通信。该功能实现的主要是文本传输。而对于发送即时消息的过程中,用户可以自定义设置发送文本的字体大小,清空输入框,保存聊天记录,导出聊天记录等功能。只要成功与服务器端连接,可以实现多个客户端与服务器进展即时通信。2自定

3、义截图功能 该功能主要是模仿目前流行的聊天软件普遍具有的截图功能。用户可以利用该功能实现自定义窗口大小的截图并保存。更大程度满足了用户对通信的需求,方便了用户的操作。 层次结构可以大体分为服务器和客户端两大局部,下面对其进展具体说明:(1) 服务器模块A. 实现框图:F Y主要类设计:(sever_tcp的设计)调用到的主要类与方法属性:1.线程类: ThreadStarThread 线程同步2.IP地址: IPAddressIPAddress.Parse()3.监听: TcpListenernetStream4.信息传送流:ReadWriteObject附上主要局部程序利用多线程实现监听和建

4、立通信连接局部publicpartialclassserver_tcp : Form privatevoid buttonStart_Click(object sender, EventArgs e) /用于服务器要为多个用户服务,所以需要创建一个线程监听客户端的连接要求ThreadStart ts = newThreadStart(AcceptConnect);Thread myThread = newThread(ts); myThread.Start(); buttonStart.Enabled = false; buttonStop.Enabled = true; privatevoi

5、d AcceptConnect() /获取本机所有IP地址IPAddress localadd = IPAddress.Parse(192.168.0.4);IPAddress ips = Dns.GetHostEntry(Dns.GetHostName().AddressList;foreach (IPAddress p in ips) if (p.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork) localadd = p;break; listener = newTcpListener(localadd, 5188

6、8); listener.Start();privatevoid ReadCallback(IAsyncResult ar) try ReadWriteObject readWriteObject = (ReadWriteObject)ar.AsyncState;int count = readWriteOStream.EndRead(ar); textBoxReceive.Invoke(setTextBoxCallback,string.Format(来自01,readWriteObject.client.Client.RemoteEndPoint,System.Text.Encoding.

7、UTF8.GetString(readWriteObject.readBytes,0,count)+/n);if (isExit = false) readWriteObject.InitReadArray(); readWriteOStream.BeginRead(readWriteObject.readBytes,0,readWriteObject.readBytes.Length,ReadCallback,readWriteObject); catch (Exception err) listBoxStatus.Invoke(setListBoxCallback, err.Message

8、); /【停止监听】按钮的Click事件privatevoid buttonStop_Click(object sender, EventArgs e) /使线程自动完毕 isExit = true;/将事件状态设置为终止状态,允许一个或者多个线程继续/从而使线程正常完毕 allDone.Set(); buttonStart.Enabled = true; buttonStop.Enabled = false; (2) 客户端模块实现框图主要类设计:client_tcp类调用的主要类与方法成员:1.启动连接: TcpClient2.IP地址: IPAddressIPAddress.Parse(

9、)3.监听: TcpListenernetStream4.信息传送流:ReadWriteObject5.委托:AsyncCallbackpublicpartialclassclient_tcp : Form privatevoid buttonConnect_Click(object sender, EventArgs e) client = newTcpClient(AddressFamily.InterNetwork);IPAddress theip = IPAddress.Parse(127.0.0.1);IPAddress ips = Dns.GetHostEntry(Dns.GetH

10、ostName().AddressList;foreach (IPAddress p in ips) if (p.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork) theip = p;break; /创建委托,并指明在异步操作完成时执行的方法AsyncCallback requestCallback = newAsyncCallback(RequestCallback);/将事件的状态设为非终止状态 allDone.Reset();/开始对一个远程主机的异步请求 client.BeginConnect(theip,51

11、888,requestCallback,client); listBoxStatus.Invoke(setListBoxCallback,string.Format(本机EndPoint:0,client.Client.LocalEndPoint); listBoxStatus.Invoke(setListBoxCallback,开始与服务器建立连接); allDone.WaitOne(); /ar是IAsyncResult类型的接口,表示异步操作的状态/是由listener.BeginAcceptTcpClient(callback,listener)传递过来的privatevoid Req

12、uestCallback(IAsyncResult ar) allDone.Set();try /获取连接成功得到的状态参数 client = (TcpClient)ar.AsyncState;/异步承受传入的连接尝试,使BeginConnect正常完毕 client.EndConnect(ar); listBoxStatus.Invoke(setListBoxCallback, string.Format(与服务器0连接成功, client.Client.RemoteEndPoint);/获取接收和发送数据的网络流 networkStream = client.GetStream();privatevoid ReadCallback(IAsyncResult ar) /异步操作能执行到此处,说明调用BeginRead已经完成try ReadObject readObject = (ReadObject)ar.AsyncState;int count = readObject.n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号