论文部分内容阅读
点对点技术(peer-to-peer,简称P2P)又称对等互联网络技术,是一种与“服务器-客户”模式相对应的网络技术,它依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上[1]。这类网络可以用于多种用途,各种文件共享软件已经得到了广泛的使用。P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。纯点对点网络没有客户端或服务器的概念,只有平等的同级节点,同时对网络上的其它节点充当客户端和服务器。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的Client-Server结构不能实现的,因为在上述这种结构中,客户端的增加意味着所有用户的数据传输速度变慢。P2P网络的分布特性通过在多节点上复制数据,也增加了系统的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。本文主要研究实现一个点对点通信系统开发包,通过对TCP/IP协议及SOCKET编程技术的研究,实现对基本SOCKET调用的封,在此基础上实现网络消息的C++封装类库,通过对C++运算符的重载,实现网络消息的“流”化读、写(发送、接收)[2]。通过对多线程技术的研究定义封装基础线程类库,定义并封装线程消息发送与接收类库,定义并封装线程管理类库。探索工作线程与UI线程之间的通信技术,多工作线的同步技术。运用C++程序设计方法,研究类库的继承、重载等方法,努力实现代码的可重用性,健壮性。通过对会话层、表示层、应用层的设计,探索并实现文件传输过程中的断点续传技术。为验证开发包的功能与使用效果,本项目开发了一个测试软件。该软件基于此开发包实现,用于局域网上大文件的点对点传输,同时还实现了断点续传功能。测试后发现,开发包调用方便,使用中表现稳定,传输速度较快,基本达到了设计的要求。此开发包的设计成功减化了点对点应用系统的开发,提高了开发效率。