聊天室传输模块.doc_第1页
聊天室传输模块.doc_第2页
聊天室传输模块.doc_第3页
聊天室传输模块.doc_第4页
聊天室传输模块.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

聊天室文件传输模块网络程序编辑实训报告 摘要:本文提出并设计了一个局域网聊天工具,并在WINDOWS平台上利用C#编程语言加以实现。本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。 关键词:局域网;C/S体系结构;文本聊天;文件传输一、聊天系统系统设计的目标与意义1.设计目标在当今信息时代,越来越多的聊天系统被应用,聊天网站是聊天软件的基本雏形,C#语言又是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用c#语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。2. 设计的意义此次设计的题目为聊天室,可以巩固所学的C#语言基础知识,增进C#语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面掌握C#语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。二、聊天室要实现的基本功能本文提出并设计了一个局域网聊天系统,并在WINDOWS平台上利用Visual Studio2010加以实现。本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理,又易于扩展以及个性化定制。聊天室实现的基本功能1. 注册账户2. 登陆3. 个人信息管理4. 聊天处理5. 查找增加好友管理6. 聊天记录管理三、聊天室的系统概要1.首先可以打开登陆界面,并且有可以用于交互的界面,可以用于登陆,注册;登陆进去之后,可以修改用户的基本信息;登陆进去的用户,可以任意的向同一网络内的其他用户发送信息!登陆进去的用户可以查询自己的聊天记录,并且定期删除自己的聊天记录。2.没有登录的用户可以新的注册,密码错误的用户可以进行邮箱的验证,忘记密码的用户可以修改自己的密码3.可以修改自己的密保问题,并且可以自己定义密保问题4.可以修改发送的字体颜色,并且在信息栏目可以显示自己的用户信息四、文件传输模块的实现在实现了文本聊天模块后,另外一个应用是文件的共享。文件共享的实现离不开文件传输。由于TCP协议能保证数据包的准确到达以及各数据包到达的顺序和数据包发出的顺序相同,出于可靠性和效率考虑,本模块也采用TCP协议来进行用户之间文件的传输。 开启窗体后,接收端执行监听线程。当接收到客户发起的文件传入请求后,弹出消息提示,提示用户对请求进行处理,同意或者拒绝接收。若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。文件传输接收端工作流程图如图所示。 文件传输发送端(左)和接收端(右)程序流程图private string path = F:SmartMovie.EXE; /要发送的文件private Socket s; private void listen()string ip = ; /远程IP 这里定义为自己的机器 IPAddress ih = Dns.GetHostAddresses(ip); /获得IP列表 IPAddress newip = ih0; /获取IP地址 int port = 6789; /定义端口 IPEndPoint Conncet = new IPEndPoint(newip, port); /构造结点 s=newSocket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp); /初始化socket try s.Connect(Conncet); /连接远程服务器 if (s.Connected) /如果连接成功 s.Connected 则为true 否则为 false Console.WriteLine(连接成功); Thread t = new Thread(new ThreadStart(set); /创建进程 t.Start(); /开始进程 Console.WriteLine(发送完毕) catch(NullReferenceException e) Console.WriteLine(0,e); private void set() /创建set函数 Console.WriteLine(开始发送数据); byte b = new byte10000000; /创建文件缓冲区,这里可以认为文件的最大值 FileStreamfile=File.Open(path,FileMode.Open,FileAccess.Read); /创建文件流 int start = 0; int end = (int)file.Length; /获取文件长度文件传送如果有需要超过int的范围估计就要改写 FileStream类了 try while (end != 0) int count = file.Read(b, start, end); /把数据写进流 start += count; end -= count; while (start != 0) int n = s.Send(b, end, start, SocketFlags.None); /用Socket的Send方法发送流 end += n; start -= n; file.Close(); /关闭文件流 s.Close(); /关闭Socket catch (NullReferenceException e) Console.WriteLine(0, e); 这样文件发送的模型就实现了 接下去实现文件的接收,首先要确定对方发送文件的长度,其实上面的那段还要加入发送文件长度的功能,实现很简单,就是发送int变量end ,然后要求接收代码返回一个Boolean确定是否发送,这里为了更简明的说清楚原理并没有实现private void get() string path = G:da.exe; /接收的文件 FileStream file = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); /写入文件流 TcpListener listen = new TcpListener(6789); /监听端口 Socket s1=newSocket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp); /定义Socket并初始化 try listen.Start(); /开始监听 s1 = listen.AcceptSocket(); /获取Socket连接 byte data = new byte10000000; /定义缓冲区 int longer = data.Length; int start = 0; int mid = 0; if (s1.Connected) /确定连接 Console.WriteLine(连接成功); In count = s1.Receive(data, start, longer, SocketFlags.None); /把接收到的byte存入缓冲区 mid += count; longer -= mid; while (count != 0) count = s1.Receive(data, mid, longer, SocketFlags.None); mid += count; longer -= mid; file.Write(data, 0, 1214134); /写入文件,1214134为文件大小,可以用socket发送获得,代码前面已 经说明。 s1.Close(); file.Close(); catch(NullReferenceException e) Console.WriteLine(0,e); 五、总结在做实验的过程中要清楚的知道程序要实现的功能是什么,然后一步一步实现,在传输模块中先要实现文件的发送,发送时就要查找文件,找到之后再发送。然后就是文件的接收,接收后选择保存的位置。到此,此程序的功能就实现了。参考文献1 (美)特罗尔森 (Andrew Troelsen).C#与.NET 3.5高级程序设计(第4版)M北京:人民邮电出版社,2009:14-722 刘骏,颜钢锋.基于Socket的网络编程技术及其实现J. 江南大学学报,2004,3(3):249-251. 3 仇谷锋.Visual C#.NET网络编程M北京:清华大学出版社,2004,:78-125.4 (美) Harvey M.DeitelC#大学教程M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论