毕业设计(论文)基于Visual C++的P2P文件传输系统的设计与实现.doc
《毕业设计(论文)基于Visual C++的P2P文件传输系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于Visual C++的P2P文件传输系统的设计与实现.doc(43页珍藏版)》请在三一办公上搜索。
1、毕业设计报告(论文) 题目:基于Visual C+的P2P文件传输系统的设计与实现 所 属 系 计算机系 _ 专 业 计算机科学与技术 学 号 姓名 指导教师 起讫日期 2012.2 - 2012.5 设计地点 南京网博_ 东南大学成贤学院毕业设计报告(论文)诚 信 承 诺本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。 学生签名: 日期:P 2 P摘 要P2P是peer-to-peer的缩写,或称为对等联网。P2P技术使得网络上的沟通变得容易,网络上现有的许多服务可以归入P2P的行列。即时
2、讯息系统如微软的MSN Messenger及国内的OICQ是最流行的P2P应用。由于它们都需要有位于中心的服务器来协调,于是便有了编写本软件的构想。本软件功能摆脱了中心服务器的束缚,是一个实用性通信软件。它的基本功能就是让用户能够在局域网甚至在广域网上点对点的进行交流。由于TCP/IP连接协议的服务是设计客户端/服务器应用程序时的主流标准,所以本软件主要采用TCP/IP协议的网络通信技术;客户端,服务器类是从CAsyncSocket类中继承来的,因此本软件通信完全是异步的;程序在 Windows XP系统、Visual C6.0下编译通过,并在Windows NT100M 以太网上运行良好。本
3、软件创建的是对话框应用程序,采用多线程操作;连接后服务器可以充当客户机,客户机也可以充当服务器。它们可以在同一台计算机上,也可以把应用程序复制到另一台计算机上,这样没有中间服务器存在,在两个独立的计算机上分别运行应用程序,从而通过网络传递消息。本软件主要完成了以下功能:基本文字聊天功能,传输文件功能,远程控制功能。还有语音聊天功能需要进一步改进,才能达到预期效果。在传输文件过程中,需要建立另一个进程,在新建的进程中传输文件,并且可以随时中断传输;远程控制功能主要是获取对方机器信息,获取对方进程,锁定和解锁键盘,锁定和解锁鼠标等。关键词 P2P;客户端;服务器;通信;多线程P 2 P Abstr
4、actP2P is the acronym for peer-to-peer, or called on other network. P2P network technology makes the communication easier, and many existing services can be classified as P2P service. Instant messaging systems such as Microsofts MSN Messenger and domestic OICQ was the most popular P2P application. A
5、s they both need the central server to coordinate the server, there is the preparation of this software concept. This software is a practical communication software, as it functions from a central server constrains. Its basic function is to allow users to the LAN or WAN in the online peer-to-peer ex
6、change. As TCP/IP agreement linking the service is designed client / server application procedures for the mainstream standards, Therefore, the software used mainly TCP/IP agreement network communication technology; client, server from CAsyncSocket inherited category, and therefore the software is c
7、ompletely asynchronous communi- cation; procedures in Windows XP system and under Visual C + + 6.0 compiler , and is running good in Windows NT and 100M Ethernet.This software creates the dialog box applications through multi-threaded operation; after connection the server can act as client, Clients
8、 can also act as servers. They can be on the same computer, can also copy the application to another computer, by doing so intermediate server no longer exists. operating applications separately in two computers so that information is imparted through the network.The software completed the following
9、 major functions : basic text chat, file transfer functions, remote control functions. Voice chat also need to be further improved in order to achieve the desired effect. Transfer files in the process, we need to create another process in the new process to transfer files, and transmission can be in
10、terrupted at any time; Remote control function is the main access to other machines of information, access to each others process, lock and unlock the keyboard and mouse locking and unlocking other. Keywords P2P ;client; Server;communication;multi-thread目录第一章 绪论11.1课题的主要内容和国内外发展方向11.2软件的预期实现的目标和完成状况
11、21.2.1服务器端的应用程序将完成如下功能21.2.2客户端的通讯程序将完成如下功能31.2.3目前的实现状况3第二章 通信方案的设计42.1 TCP与UDP协议的选择42.1.1 TCP协议42.1.2 UDP协议52.2 多线程编程52.3 WinInet编程与WinSock编程的比较及其优点62.4 通信原理及过程6第三章 具体的设计方法83.1 基本的SOCKET函数83.2 通信过程113.2.1 C/S模式的请求响应方式113.2.2 SOCKET建立连接过程123.2.3传输文件过程133.2.4远程控制过程143.3 具体实现部分153.3.1实现基本聊天的功能153.3.2
12、实现传输文件的功能223.3.3截图243.3.4语音通信253.3.5远程控制27第四章 存在的问题及解决办法31第五章 后记34第六章 参考文献35第七章 致 谢36第一章 绪论1.1课题的主要内容和国内外发展方向 P2P可以理解为“伙伴对伙伴”的意思。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。2002年,尼古拉斯曾斯特姆(Niklas Zennstrom)把P2P音乐下载软件KaZaA买给一家小公司时,得到了50万美元;2005年,他把P2P通信软件Skype出售给eBay时,赚到了21亿美金。三年前,因为P2P音乐下载,他和创业伙伴面临着来自美国唱片工业协会
13、的诉讼威胁;三年后,P2P支撑的互联网通信已经成为市场的宠儿。P2P使得一个用户可以直接连接到其它用户的计算机,并交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态,重返“非中心化”,并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。即使从网络看,P2P也不是新概念,P2P是互联网整体架构的基础。互联网最基本的协议TCP/IP并没有客户端和服务器的概念,所有的设备都是通讯的平等的一端
14、。在十年之前,所有的互联网上的系统都同时具有服务器和客户端的功能。当然,后来发展的那些架构在TCP/IP之上的软件的确采用了客户机/服务器的结构:浏览器和Web服务器,邮件客户端和邮件服务器。但是,对于服务器来说,它们之间仍然是对等联网的。以email为例,互联网上并没有一个巨大的、唯一的邮件服务器来处理所有的email,而是对等联网的邮件服务器相互协作把email传送到相应的服务器上去。但是过去的5年里,互联网的发展至少从表面上远离了P2P,互联网上绝大部分的节点也不能和其它节点直接地交流。今天,P2P再一次被关注主要是由于Napster以及ICQ类软件的出现,虽然在Napster之前P2P
15、方式的研究也从未停止。Napster正是唤醒了深藏在互联网背后的对等联网。Napster的文件共享功能在局域网中共享目录也是再平常不过的事情。但是Napster的成功促使人们认识到把这种“对等联网”拓展到整个互联网范围的可能性。当然,在许多人的眼中,Napster并不是纯粹的P2P,它仍然需要一个处于中心协调机制。P2P引导网络计算模式从集中式向分布式偏移,也就是说网络应用的核心从中央服务器向网络边缘的终端设备扩散:服务器到服务器、服务器到PC机、PC机到PC机,PC机到WAP手机所有网络节点上的设备都可以建立P2P对话。这使人们在Internet上的共享行为被提到了一个更高的层次,使人们以更
16、主动深刻的方式参与到网络中去,正如I2(第二代互联网:简单的说,就是借助IPv6的力量,解决绝大多数第一代互联网遇到的难题,把网络、电视、电话还有所有可能想象到的应用囊括其中)之父Doug. Van Houweling在他的中国之行时说到的:“下一代互联网民们将真正参与到网络中来,每个人都能为网络的资源和功能扩展作出自己的贡献。”P2P给互联网的分布、共享精神带来了无限的遐想。 在国外,P2P发展已经如火如荼,Intel、Sun、Microsoft等公司已经在制定P2P的标准。P2P技术的巨大影响力横亘了内容发行、通信等领域,它广阔的前景引来微软、Google、雅虎、新闻集团等公司的关注,但是
17、P2P对内容产业以及对传统通信公司的负面影响依然存在,在很多国家都曾经出现过互联网服务提供商封杀P2P的事件。Napster虽然败诉,这似乎预示着P2P的挫折,但实际上这却意味着由P2P带来的新的规则正在建立,相关的数字版权立法已经开始,P2P的力量开始逐步显示出来。国内P2P的市场基本从2000年底开始逐步启动。目前,国内P2P的应用主要有两个方向:文件共享及协同工作。具有代表性的技术有:P2P多线程断点续传的实现;P2P之UDP穿透NAT的原理与实现;IPTV业务承载网的解决;IPTV流媒体分发和交付技术的新突破;第三代google排名搜索引擎技术;网格的应用;基于P2P思想的QQ蠕虫的原
18、理与防治;网络电话;流媒体应用等。1.2软件的预期实现的目标和完成状况1.2.1服务器端的应用程序将完成如下功能通过数据库验证用户名密码登陆设置服务器的账号监听客户端的连接请求为请求连接的客户端建立SOCKET队列向客户端发送消息从客户端接收消息向客户端发送文件从客户端接收文件与客户端语音通信截取屏幕可以与客户端进行远程协助(控制键盘鼠标进程)1.2.2客户端的通讯程序将完成如下功能通过数据库验证用户名密码登陆建立与服务器的连接关闭与服务器的连接向服务器发送消息从服务器接收消息向服务器发送文件从服务器接收文件与服务器语音通信截取屏幕可以与服务器进行远程协助(控制键盘鼠标进程)1.2.3目前的实
19、现状况 由于这套软件采用Visual C进行网络编程,同时还涉及到了数据库编程和VC的多线程,为了使用户接口美观、使用方便,还需要采用编程的方法进行处理和美化,另外处理网络通信和用户信息交流还要建立各种辅助的数据结构和信息管理系统,所以需要处理的细节问题较多;此外,服务器和客户端软件要分别编写,这样还牵扯到它们之间通信方案的制定,这样造成整套软件的编码工作量较大,所以整个软件的实现目标并未完全实现,主要是与数据库连接,语音聊天和界面的美工尚未完成。第二章 通信方案的设计2.1 TCP与UDP协议的选择2.1.1 TCP协议TCP/IP通常指的是关于TCP和IP的任何东西,它是一个统称,它既可以
20、包括其它协议,其它应用程序,还可以包括网络介质。基本结构如图2.1, 这个结构存在于Internet中计算机之中,它决定了计算机在网络上的动作。 TELNETFTPSMTPDNSTCPUDPIPARPANETSATNETLAN协议网络应用层传输层网络层物理层和数链层图2 1TCP/IP模型中早期的协议和网络如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP资料包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程
21、序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP协议发送和接收域名数据库,但使用UDP协议传送有关单个主机的信息。TCP协议即采用流式套接字SOCKET_STREAM。2.1.2 UDP协议UDP与TCP位于同一层,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的
22、服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。UDP协议使用数据报式套接字SOCKET_DGRAM。虽然基于TCP/IP连接协议(流套接字)的服务是设计客户机/服务器应用程序时的主流标准,但有些服务也是可以通过无连接协议(资料报套接字)提供的。先介绍一下TCP socket 与UDP socket在传送数据时的特性:Stream (TCP) Socket提供双向、可靠、有次序、不重复的数据传送。Datagram(UDP)
23、Socket虽然提供双向的通信,但没有可靠、有次序、不重复的保证,所以UDP传送数据可能会收到无次序、重复的数据,甚至数据在传输过程中出现遗漏。由于UDP Socket 在传送数据时,并不保证数据能完整地送达对方,所以本程序采用TCP协议处理Socket,以保证数据的正确性。一般情况下TCP Socket 的数据发送和接收是调用send() 及recv() 这两个函数来达成,而 UDP Socket则是用sendto() 及recvfrom() 这两个函数,这两个函数调用成功发挥发送或接收的数据的长度,否则返回SOCKET_ERROR。2.2 多线程编程 由于用到对话框,所以单线程的操作会严重
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计论文基于Visual C+的P2P文件传输系统的设计与实现 毕业设计 论文 基于 Visual C+ P2P 文件传输 系统 设计 实现
链接地址:https://www.31ppt.com/p-2385469.html