{$cfg_webname}
主页 > 计算机 > ASP.NET >

基于.NET平台的P2P聊天工具的设计(C#语言)(ASP.NET2.0)(2人组)

来源:wenku163.com  资料编号:WK1631429 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9AWK1631429
资料介绍

摘要
P2P网络是一种具有较高扩展性的分布式网络,其对等概念是指网络中的物理节点在逻辑上具有相同的地位,而并非处理能力的对等。P2P技术其实质在于将互联网的集中管理模式引向分散管理模式,将内容从中央单一节点引向网络的边缘,从而充分利用互联网中众多终端节点所蕴涵的处理能力和潜在资源。相对于传统的客户/服务器(C/S)模型,P2P弱化了服务器的概念。
而随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。局域网的发展也同样迅速。很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET。因此基于局域网的即时通信工具,就这样应运而生了。本文提出了一个基于P2P网络拓扑结构的局域网聊天工具的设计,并在WINDOWS平台上加以了实现。本设计将文本聊天和文件传输等功能综合在一个客户端程序之内,使用C#语言进行网络编程,用多线程实现不同的并行任务,并进行了人性化的界面设计,使用起来简单方便,并且功能十分合理。

关键词:P2P,局域网,即时通信,文件传输,C#
.NET Platform-based P2P Chat Tool
Abstract
P2P network is a high scalable distributed network, its concepts such as is the physical nodes in the network logically have the same status, but not the processing power of the right and so on. P2P technology, its essence lies in the centralized management mode of the Internet towards decentralized management model, will lead the content of a single node from the central edge of the network and thus make full use of the Internet, a number of terminal nodes implies the processing power and potential resources. Compared with traditional client / server (C / S) model, P2P weakening the server concept.
With the development of computer network technology, various web-based applications also will be born, such as Internet-based information dissemination, communication, data sharing and so on. The development of local area network as quickly. Many government agencies, businesses, schools, are first used a single local area network linked together, each with access to INTERNET. Therefore, LAN-based instant communication tool, and thus came into being. This paper presents a P2P network topology based on local area network chat tool for the design, and WINDOWS platform to be achieved. This design will be a text chat and file transfer functions are integrated in a client within the network using the C # programming language with multiple threads in parallel to achieve different tasks, and conducted user-friendly interface design, easy to use, and the function is quite reasonable.

Keywords:P2P, local area network, instant communication, file transfer, C#

P2P文件传输
1) 功能概述
将文件发送端和接收端模块,通过多线程技术,集成在聊天窗体和主窗体里面,窗体加载时进行监听,有文件传输请求到达,则为接收端,执行接收端工作流程;若试图发送文件到远程用户,则为发送端,执行发送端工作流程。这样就实现了P2P模式对等传输。
2) P2P文件传输工作流程
负责接收文件的监听线程集成在聊天窗体内,当聊天窗体加载时,将开启此线程。当有文件传入请求,用户可以同意或者拒绝接收,若同意接收,则按照文件传输接收端模块工作流程执行。若在聊天窗体生存周期内,无接入连接请求,则判断是否有用户尝试发送文件事件,若有,则按照文件传输发送端模块工作流程执行。

程序运行环境:
系统开发平台:Microsoft Visual Studio 2005
Windows XP Professional ServerPack3
系统开发语言:C#
运行平台:Window2000,Windows XP,Windows Server 2003及以上
运行环境:Microsoft .Net Framework 2.0

在本次开发过程中,我主要负责用户管理模块、文件传输模块。

文件传输模块概述
除了文本聊天以外,局域网内另外一个应用是文件的共享。通过文件共享,用户之间能提高信息交换的速度。文件共享的实现离不开文件传输。
本程序使用UDP协议进行文件传输,UDP协议有如下的特点:
1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。
2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息,而且报文不一定按顺序到达的,所以接收端无从排起。
3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。
4、UDP传送数据较TCP快速,系统开销也少。
由于UDP传输速度快,所以采用该协议,鉴于其以上第二和第三个特点,所以本程序设计为文件传输结束后利用MD5技术进行数据验证从而确保正确性。

文件传输接收端工作原理
开启窗体后,接收端执行监听线程。当接收到客户发起的文件传入请求后,弹出消息提示对话框,提示用户对请求进行处理,同意或者拒绝接收。若同意接收,则弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在状态栏上显示出完毕状态。若拒绝接收,则向发送端返回拒绝信号,继续执行监听线程,等待下一次的文件传入请求。

基于.NET平台的P2P聊天工具的设计
基于.NET平台的P2P聊天工具的设计
基于.NET平台的P2P聊天工具的设计
基于.NET平台的P2P聊天工具的设计
基于.NET平台的P2P聊天工具的设计
基于.NET平台的P2P聊天工具的设计
 


12000字
摘要 3 
Abstract 4
第1章 引言 5
1.1 系统开发的背景 5
1.2 P2P局域网聊天工具开发的目标 5
1.3 P2P局域网聊天工具开发的现实意义 5
第2章 开发平台与相关知识简介 7
2.1 系统综合要求 7
2.1.1 硬件要求: 7
2.1.2 程序运行环境: 7
2.2 C# 简介 7
2.3 Microsoft .NET Framework 简介 7
2.4 .NET 与多线程技术 8
2.5 P2P网络及UDP穿透NAT的原理 8
第3章 需求分析 10
3.1 用户需求 10
3.2 系统功能需求 10
3.3 性能要求 11
3.4 测试环境规定 11
3.5 可行性研究 11
第4章 系统设计 12
4.1 系统目标 12
4.2 系统功能结构 12
4.3 业务流程图 13
4.4 系统模块划分 13
第5章 系统模块详细设计 14
5.1 文件传输模块实现 14
5.1.1 文件传输模块概述 14
5.1.2 文件传输接收端工作原理 14
5.1.3 文件传输发送端工作原理 15
5.1.4 P2P文件传输 16
5.2 用户管理模块实现 19
5.2.1 用户管理模块概述 19
5.2.2 用户数据模型 19
5.2.3 用户信息的保存 19
5.2.4 更新用户数据和取得用户数据 20
第6章 系统测试 21
6.1 系统测试概述 21
6.2 白盒测试 21
6.2.1 测试环境配置 21
6.2.2 正确性测试 21
6.3 黑盒测试 22
6.3.1 测试环境配置 22
6.3.2 功能性测试 22
6.3.3 异常测试 22
6.3.4 性能与效率测试 23
6.3.5 易用性测试 23
6.3.6 文档测试 23
第7章 主要问题及解决 24
7.1 多线程问题 24
7.2 网络流异常 24
结束语 25
致谢 26
参考文献 27
附录 28
核心代码 28

推荐资料