局域网通信设计报告.doc_第1页
局域网通信设计报告.doc_第2页
局域网通信设计报告.doc_第3页
局域网通信设计报告.doc_第4页
局域网通信设计报告.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

课程设计(论文)局域网通信系统论文作者:指导教师:专 业:系 (院):答辩日期:目录摘 要1一、绪论11.1 即时通信系统的概念11.2 UDP协议11.3 开发背景11.4 运行环境21.5程序核心流程图21.6功能设计2二、 主要界面及功能的实现42.1界面设计41)主界面42)添加好友界面43)更换头像界面54)搜索界面55)聊天界面56)修改备注界面62.2编码实现62.2.1 主程序初始化函数62.2.2监听端口方法72.2.3 添加好友方法82.2.4 删除好友92.2.5修改好友备注92.2.6修改头像92.2.7截图功能102.2.7 聊天界面初始化方法102.2.8 消息接收并显示112.2.9 图片发送以及保存方法12三、软件测试13四、结论14致 谢15参考文献16摘要摘 要即时通讯软件是目前计算机用户进行交流最普遍的方式之一,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。本系统是基于UDP的局域网聊天工具。从实现了面向无连接的点对点异步通信,在此基础上应用了多线程技术解决了局域网多用户间的通信问题。聊天程序以Visual Studio 2008为基本开发环境和C# 语言进行编码设计实验表明该聊天工具能够为局域网内部人员提供一个很好的交流平台,方便了工作上的交流与协同。本课题开发了一个基于局域网内部的消息通讯平台。在此平台上可以实现内部用户之间的实时通讯,使用户之间能更及时、更方便有效的沟通信息。实现了局域网内部电子信息化的交流,提高了工作效率。本系统有如下功能:1、信息的接受和发送功能:包括文字信息以及图像信息。2、添加好友功能:能够通过IP查找到相对应的用户以及添加其为自己的好友。3、数据本地化功能,将好友信息保存在本地.4、图片发送与接收,保存到本地功能.5、截屏功能6、更换头像功能第1章 绪论一、 绪论1.1 即时通信系统的概念即时通讯(Instant Messenger,简称IM),是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连网即时通讯网络的服务。即时通讯不同于e-mail在于它的交谈是即时的。大部分的即时通讯服务提供了状态信息的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。 近年来,随着无线通信的快速发展,移动互联网为传统的Internet注入了新的活力,同时也为即时通讯带来了一场革命,交互双方已经不再局限于以网络终端设备为唯一的接入手段,PC机在传统的网络即时通讯中所起的作用正在被手机、平板电脑所取代。这使得即时通讯更加大众化和人性化,即使不会使用电脑的人现在也可以享受到即时通讯给人们带来的变化。1.2 UDP协议UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。1.3 开发背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异。但是,QQ等现有的聊天程序也存在着很大的问题。比如使用QQ的时候,就对各种弹窗广告深恶痛绝。对于登陆后时不时弹出的打扰窗口,很是厌烦。因此在本次作业下产生了一个制作类似QQ的网络聊天工具并且“无垃圾信息”洁净聊天工具的想法,而且希望通过制作该程序还能更好的学习网络软件编程知识。1.4 运行环境1.本系统基于Visual Studio 2008设计,适用于WINDOWS XP,WIN7,WIN8等系统。2.运行环境仅限于局域网,否则无法正常通信.3.使用C#语言开发1.5程序核心流程图如图1.1所示:接收Receive发送Send客户端1关 闭Listen监听端口Udp图1.1程序核心流程图1.6功能设计1) 自动获取本机IP,并监听指定端口有无消息接收。2) 界面显示:将已添加好友显示在好友列表中,如有不是好友向本机发消息,将自动添加为好友。3) 聊天功能:与好友聊天。4) 好友纪录:能保存好友信息至本地,并能察看。5) 更换头像:双击头像,能够更换头像显示 6) 发送图片:在聊天界面选择要发送的图片进行发送。7) 截屏:将截取整个屏幕,并且保存到指定位置。如图1.2所示: 图1.2 功能设计图 客户端截 取 屏 幕保存好友信息添删备注好友更 改 头 像接收各种信息获取本机IP地址17第2章 主要界面及功能的实现二、 主要界面及功能的实现2.1界面设计1)主界面如图1.3所示:图1.3主界面图2)添加好友界面如图1.4所示:图1.4添加好友图3)更换头像界面如图1.5所示:图1.5更换头像界面图4)搜索界面如图1.6所示:图1.6搜索界面图5)聊天界面如图1.7所示:图1.7聊天界面图6)修改备注界面如图1.8所示:图1.8修改备注图2.2编码实现2.2.1 主程序初始化函数改函数的主要功能为创建UDP实例,并且开启新线程监听消息收发端口,,以及从本地加载好友信息,添加至主界面的ListBox控件列表中void Form1_Load(object sender, EventArgs e) uc = new UdpClient(6959); LIPAddress.Text = getInfo.myIp(); Thread th = new Thread(new ThreadStart(listen); th.IsBackground = true; th.Start(); /-填充ListBox- loadXMLList(); if (friendsList.Items.Count != 0)/选中列表第一个 friendsList.SelectedIndex = 0;2.2.2监听端口方法该方法主要功能是监听端口信息,收到消息后首先判断是否已存在该好友的聊天窗口,如果存在只发送消息到窗口,否则创建新的窗口实例,并且弹出聊天界面。还实现了陌生好友来信后自动添加信息至ListBox和本地。IPEndPoint iep; string text,text1; byte b; private void listen()/监听端口 iep = new IPEndPoint(IPAddress.Parse(getInfo.myIp(), 6959); while (true) text = ; b = uc.Receive(ref iep); text = System.Text.Encoding.UTF8.GetString(b); if (text != ) text1 = text; MethodInvoker mi = new MethodInvoker(openNewForm); BeginInvoke(mi); public void openNewForm() CommForm cf=null; if (!listIP.Contains(iep.Address.ToString() Friend f = new Friend(); f.IpAddress = iep.Address.ToString(); f.NickName = ; SaveOrLoad.addNodeXML(f); loadXMLList(); if (listForm.Count = 0) cf = new CommForm(listFriend, iep.Address.ToString(),listIP); cf.Name = iep.Address.ToString(); cf.rMessage(text1, iep.Address.ToString(),b); cf.Show(); listForm.Add(cf); else foreach (CommForm f in listForm) if (f.Name = iep.Address.ToString() f.rMessage(text1, iep.Address.ToString(),b); else cf = new CommForm(listFriend, iep.Address.ToString(), listIP); cf.Name = iep.Address.ToString(); cf.rMessage(text1, iep.Address.ToString(),b); cf.Show(); listForm.Add(cf); 2.2.3 添加好友方法该方法实现的功能为 单击主界面的添加好友按钮,弹出添加好友对话框,输入对面IP后点击确定返回IP,并添加至本地和ListBox控件。private void button2_Click(object sender, EventArgs e) AddFriendForm aff = new AddFriendForm(); if (aff.ShowDialog() = DialogResult.OK) if (!listIP.Contains(aff.IpAdd) Friend f = new Friend(); f.IpAddress = aff.IpAdd; f.NickName = ; SaveOrLoad.addNodeXML(f); friendsList.Items.Add(aff.IpAdd);/列表添加 loadXMLList(); else MessageBox.Show(已存在); 2.2.4 删除好友该方法实现的功能为右击ListBox控件弹出右键菜单,单击后删除好友。private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) if (friendsList.SelectedIndex != -1) SaveOrLoad.DelNodeXML(friendsList.SelectedIndex); friendsList.Items.Remove(friendsList.SelectedItem.ToString(); loadXMLList(); else MessageBox.Show(没有选择任何项); 2.2.5修改好友备注该方法实现的功能为右击ListBox控件弹出右键菜单,单击后弹出修改对话框输入后返回输入信息。private void 备注ToolStripMenuItem_Click(object sender, EventArgs e) if (friendsList.SelectedIndex != -1) ChangeNameForm aff = new ChangeNameForm(); if (aff.ShowDialog() = DialogResult.OK) SaveOrLoad.UpdateNodeXML(friendsList.SelectedIndex, aff.ChangeName); friendsList.ItemsfriendsList.SelectedIndex= aff.ChangeName; loadXMLList(); else MessageBox.Show(没有选择任何项); 2.2.6修改头像该方法主要实现了双击主界面的头像,弹出头像选择窗体,单击喜欢的头像后,实现头像的修改。private void pictureBox1_DoubleClick(object sender, EventArgs e) TouxForm tf = new TouxForm(); if (tf.ShowDialog() = DialogResult.OK) pictureBox1.Image = tf.ImagePath; 2.2.7截图功能该方法主要实现电机主界面截图按钮,实现全屏截图,然后保存至本地。private void button3_Click(object sender, EventArgs e) this.Visible = false; System.Threading.Thread.Sleep(200); Bitmap bit = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); Graphics g = Graphics.FromImage(bit); g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bit.Size); SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = bmp|*.bmp|jpg|*.jpg|gif|*.gif; if (saveFileDialog.ShowDialog() != DialogResult.Cancel) bit.Save(saveFileDialog.FileName); g.Dispose(); this.Visible = true; 2.2.7 聊天界面初始化方法这几个函数主要实现了UPD的初始化,接收来源好友的信息,判断是否已经备注决定窗体标题的显示,如果没有备注显示对方IP否则显示对方备注。public CommForm(List listFriend, string ips, List listIP) InitializeComponent(); ip = ips; uc = new UdpClient(); this.listFriend = listFriend; this.listIP = listIP; this.Load += new EventHandler(CommForm_Load2); void CommForm_Load2(object sender, EventArgs e) if (listIP.Contains(ip) int i=listIP.IndexOf(ip); if (listFriendi.NickName = ) this.Text = ip; else this.Text = listFriendi.NickName + - + ip; public CommForm(List listFriend, int selectIndex) InitializeComponent(); uc = new UdpClient(); this.listFriend = listFriend; this.selectIndex=selectIndex; this.Load += new EventHandler(CommForm_Load); void CommForm_Load(object sender, EventArgs e) if (listFriendselectIndex.NickName = ) ip = this.Text; else ip = listFriendselectIndex.IpAddress; this.Text+= - +ip; 2.2.8 消息接收并显示该方法主要将收到的消息以及要发送的消息显示到聊天界面的TextBox中。public void rMessage(string message, string name, byte b) if (b.Length 100) ByteArrayToImage(b, b.Length); else DateTime dt = DateTime.Now; mess.Text += dt.Month + / + dt.Day + + dt.Hour + : + dt.Minute + + name + rnrn; mess.Text += message + rnrn; mess.SelectionStart = mess.Text.Length; mess.ScrollToCaret(); 2.2.9 图片发送以及保存方法这几个方法主要实现了将收到的二进制图片数据通过ByteArrayToImage()方法转换为图片数据,并且显示到PictureBox控件中同时可以按保存按钮将接收到的图片保存到本地。public void ByteArrayToImage(byte byteArrayIn, int count) MemoryStream ms = new MemoryStream(byteArrayIn, 0, byteArrayIn.Length); Image returnImage = Image.FromStream(ms); this.pictureBox1.Image = returnImage; btnSave.Visible = true; string path; private void button3_Click(object sender, EventArgs e) OpenFileDialog open = new OpenFileDialog(); open.Filter = jpg|*.jpg|gif|*.gif; if (open.ShowDialog() != DialogResult.Cancel) pictureBox1.Image = Image.FromFile(open.FileName); path = open.FileName; button4.Visible = true; private void button4_Click(object sender, EventArgs e) IPEndPoint iep = new IPEndPoint(IPAddress.Parse(ip), 6959); FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); BinaryReader binaryReader = new BinaryReader(fileStream); byte img = binaryReader.ReadBytes(int)fileStream.Length); binaryReader.Close(); fileStream.Close(); /发送信息 try uc.Send(img, img.Length, iep); catch(Exception ex) MessageBox.Show(文件过大); private void btnSave_Click(object sender, EventArgs e) SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = bmp|*.bmp|jpg|*.jpg|gif|*.gif; if (saveFileDialog.ShowDialog() != DialogResult.Cancel) pictureBox1.Image.Save(saveFileDialog.FileName); 第3章 软件测试三、软件测试软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。在目前形式化方法和程序正确性证明技术还无望成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法。软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。通过自己在自己机器上通过多个进程的测试和通过两台机器联机测试,本程序完全实现了概要设计和详细设计的各种功能,满足了提出的各种要求。但是,测试期间也发现了不少问题,而且这些问题中有些以我们现在的水平还无法解决,只能说是测试是否能够通过程序验证。所以,对于本程序中的问题,还要通过在以后的学习中解决。由于时间和自己的能力有限,该系统还有很多不足和需要改善的地方。如:好友在线时才能发送消息和文件,界面还不够美观,功能还不完全等等, 还不能像飞鸽这种局域网通讯软件一样成功,需要更加丰富的经验和更多知识技能和更多的时间与精力去完善。对于本系统的展望:该系统还有很多可以改进的地方,希望以后有时间和能力去改进。比如:改变聊天字体的大小和字体、发送表情、增加截图功能、发送抖动窗体,视频与语音功能、远程协助等功能。四、结论经过几天的课程设计,即时局域网通讯系统终于完成了。本文在对相关理论知识的基础上设计了一个基于UDP协议的即时通讯系统,分析系统的工作流程,并应用.NET平台具体实现了一些基本的功能,如:即时聊天、添加好友和分组、删除好友和分组、图片传输等。本系统功能虽简单,但目的的了解基于.NET的窗体应用程序的开发过程,如果要完善系统还需更多的时间。课程设计的过程是一个学习与研究的过程,而且,我深刻地认识到如果在实践中学习与研究,所学习的知识和技能就会更扎实。我使用.NET为开发平台,Socket等相关技术完成系统,虽然系统已基本完成,但我对于.NET的核心技术和高级编程还是很陌生,不能熟练运用,对于C#语言也不是很熟悉,这是我以后需解决的问题。在此次的毕业设计中,我深深地体会到进行软件开发不是一件容易的事情,它需要开发者具备全面的专业知识、严谨的工

温馨提示

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

评论

0/150

提交评论