《网络编程技术》课程设计报告课程设计题目:局域网点对点通信软件与实现作者所在系部:计算机科学与工程系作者所在专业:网络工程作者所在班级:作者姓名:作者学号:指导教师姓名:完成时间:2013年07月10日课程设计任务书课题名称局域网点对点通信软件设计与实现完成时间20周指导教师职称讲师学生姓名班级总体设计要求和技术要点1.总体功能描述:(1)本软件采用单纯P2P方式,各个客户端之间可以直接发送消息和传输文件;(2)根据选中的用户,实现一对一或一对多通信。(3)软件中包括在线的用户信息列表、通信信息列表(聊天及文件传输)等。(4)实现用户的动态加入和退出。(5)在线列表中记录登陆的主机名称及IP地址信息。(6)客户端定期发送心跳包,表示本客户端的存在。2.开发工具:采用VisualStudio2010,编程语言为C#。3.采用技术:多线程技术、Socket通信技术、TCP、UDP通信技术,P2P技术等。4.基本要求:操作简便功能齐全,风格统一没有明显错误和异常工作内容及时间进度安排1.19周:需求分析及项目的设计与实现2.20周:项目验收与答辩,撰写课程设计报告课程设计成果1.局域网点对点通信软件2.课程设计报告书摘要所谓网络中的点对点通信是实现网络上不同计算机之间,不经过任何中继设备而直接交换数据或服务的一种技术。由于允许网络中任何一台计算机可以直接连到网络中的其他计算机,并与之进行数据交换,这样既可以消除中间环节,也使得网络上的沟通变的更加容易、更加直接。本文介绍的是一种是用Winsock编程技术,基于TCP/IP协议的、面向连接的流式套接字网络通信编程设计。局域网即时通讯软件使用TCP协议作为传输层的协议,采用点对点模式服务,不需要服务器支持,使局域网用户的使用更加方便和高效。它可以实现局域网用户的自动检测,用户间文本信息的交流,文件的传输等功能。本系统使用VisualStudio2010作为开发工具,将.NET中的一些技术运用到系统中关键词:点对点;TCP/IP;Socket;UDP;P2P目录摘要....................................................................2目录..................................................................3第1章绪论............................................................41.1课题研究现状分析................................................41.2选题的目的及意义................................................4第2章系统需求分析....................................................52.1问题的提出......................................................52.2系统的设计目标..................................................5第3章系统总体设计....................................................63.1系统功能设计....................................................63.2功能模块的说明..................................................73.2.1初始化(广播用户信息)........................................73.2.2用户列表管理..................................................73.2.3文本信息传输..................................................73.2.4文件传输......................................................73.2.5发送心跳包....................................................7第4章系统实现........................................................84.1初始化模块的设计和实现..........................................84.1.1监听端口......................................................84.2广播消息........................................................84.3文本消息的发送和接收............................................94.4文件的发送和接收...............................................124.5发送心跳包.....................................................14第5章课程设计总结...................................................165.1主要问题及解决办法.............................................165.2课程设计体会...................................................165.3自我评定.......................................................16参考文献...............................................................174第1章绪论1.1课题研究现状分析随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。作为整个计算机网络的基础,局域网用户之间进行即时通许的需求更大,而且他们之间进行文件传输与共享的频率更高,因此有必要设计一款专门为局域网用户使用的即时通讯软件。当前存在的即时通讯软件很多,但其中很多一部分由于嵌入了太多的娱乐功能而不很实用。对于局域网用户来说,首先,由于他们之间进行通讯的不确定性和随机性,所以如果专门为他们建立一个服务器端的话,势必会造成很大的浪费,因此,本软件选择实用点对点服务模式,不需要服务器支持。其次,局域网用户之间进行交流的主要方式及时文字信息交流,因此,本软件实现的最基本的功能就是文字信息的传输。再次,局域网用户要频繁的进行文件的传输,所以本软件还实现了两个用户之间文件的传输。1.2选题的目的及意义随着计算机和Internet的飞速发张,网上聊天已成为人们相互交流的一中方式,与E-mail,电话相比,聊天服务更具有实时性和有效性。网络版的聊天软件种类繁多,如QQ,MSN等,实时随时随地上网聊天,给人们带来了很大的方便。但是这些聊天软件业存在以下不足:用户必须连接Internet;用户工作时容易沉迷于网络聊天。为了方便单位企业内部的信息交流,避免企业内部员工使用类似QQ等软件泄露内部消息,减少不必要的财力和人力资源浪费,开发一耳光局域网聊天软件是非常必要的。5第2章系统需求分析2.1问题的提出为了满足人们在局域网内部进行安全、有效、快速的沟通以及文件的传输的目的。2.2系统的设计目标(1)本软件采用单纯P2P方式,各个客户端之间可以直接发送消息和传输文件;(2)根据选中的用户,实现一对一或一对多通信。(3)软件中包括在线的用户信息列表、通信信息列表(聊天及文件传输)等。(4)实现用户的动态加入和退出。(5)在线列表中记录登陆的主机名称及IP地址信息。(6)客户端定期发送心跳包,表示本客户端的存在。6第3章系统总体设计3.1系统功能设计本软件可以实现局域网内用户的自动检测,用户之间的文件信息交流,文件传输等功能。据此,本设计的功能模块可以分为5个:广播用户信息,用户列表管理,文字信息传输,文件传输,发送心跳包。系统的总功能模块图如图3-1所示:图3-1系统功能模块图用户主界面如图3-2所示:图3-2用户界面图初始化:广播用户信息获取用户列表:用户列表管理文本信息传输文件传输发送心跳包73.2功能模块的说明3.2.1初始化(广播用户信息)该模块的主要功能是搜集本机用户的相关信息,如计算机名,IP地址,初始化Socket,开始监听端口,并把本机用户的信息通过广播消息发送出去。3.2.2用户列表管理该模块的主要功能是对收到的用户信息进行管理,包括用户列表的更新,用户信息查找,同时还要对其他用户的广播消息进行反馈。3.2.3文本信息传输该模块的主要功能是把当前文本框的内容发送给当前选中的用户,分为私聊和群聊,如果发送成功,则把当前文本框的内容加上某些必须的信息在聊天记录文本框中显示,同时清空输入文本框。该模块还要具有纠正用户为空(为选中用户)或者发送内容为空的情况。3.2.4文件传输该模块的主要功能是实现两个用户之间的点对点的文件传输。使用TCP协议进行传输,能确保文件发送过程中不出现丢失现象。3.2.5发送心跳包该模块的主要功能是检测用户是否在线。8第4章系统实现4.1初始化模块的设计和实现使用Socket编程都是使用的是一些绑定端口和IP的普通的程序,而UDP数据报则支持向局域网内的所有用户发送组播消息,即向ip224.100.0.1发送消息,局域网内所有监听相同端口的UDPClient都会收到该消息。4.1.1监听端口本程序中用到了大量的SocketUdp发送和接收数据的操作,所以把这些相关操作定义为一个组件,这样就简化了程序中其他部分的代码;privateUdpClientudpClient;privateintport=8002;privatevoidForm1_Load_1(objectsender,EventArgse){ThreadmyThread=newThread(ReceiveMessage);myThread.Start();}privatevoidReceiveMessage(){udpClient=newUdpClient(port);}4.2广播消息发送广播消息主要代码:privatevoidForm1_Load(objectsender,EventArgse){name=Dns.GetHostName();Cursor.Current=Cursors.WaitCursor;监听端口获得本地用户信息广播消息处理收到的用户信息初始化模块工作过程9ThreadmyThread=newThread(ReceiveMessage);myThread.Start();Thread.Sleep(1000);SendMessage(broderCastIP,login,+name);IPAddress[]ips=Dns.GetHostAddresses(name);IPAddressip=ips[1];txtIP.Text=ip.ToString();txtHostName.Text=name;txtIP.ReadOnly=true;txtHostName.ReadOnly=true;Threadt=newThread(lis);t.Start();t.IsBackgroun