PPECard

王朝百科·作者佚名  2010-04-13  
宽屏版  字体: |||超大  

随着计算机网络技术的飞速发展,人们利用网络发布和搜索信息变得越来越普及。电子名片作为一种结合了网络互联优势的新的发布名片信息的方式,它使用电子化的形式,借助网络的优势能够快速访问、更新和交换用户名片信息,已经变得越来越受大众欢迎。

本设计的目标是设计一个基于P2P技术的电子名片系统。其基本功能是电子名片的存储与管理,电子名片的发送与传输,用户上线下线,上线用户搜索等功能。

本系统使用P2P模式实现,不需要使用服务器。每台运行本程序的机器均作为对等节点存在。通过本系统,用户上线后在局域网中的其他用户都将得到通知。每个用户可以向其他用户有选择地发送名片;每个用户也可以向某个用户发出名片的请求,待对方同意后就可以获取其名片,然后成为好友关系。也可以对存储的电子名片进行删除操作。用户可以修改自己的电子名片;也可以查看好友的电子名片,但不能修改好友的电子名片;可以向陌生人请求电子名片,但不能查看及修改陌生人的电子名片。

关键词:点对点 电子名片XML C# .NET 数据库

系统功能设计

对于本地用户来说,网络中存在的用户应有两类角色:好友和陌生人。好友用户是指,其名片数据(包括不完整内容的名片)已被本地用户获取并存储于本地用户机器的数据库中;陌生人是指,其名片内容对于本地用户来说是未知的,不经过陌生人的允许本地用户无法获取其名片内容。

类似于即时通讯软件,在本系统中用户能够登录网络和退出网络,称之为“上线”和“下线”,并在上线时能向网络中其他用户发出可视的通知。

对于自己的名片,本地用户必须能够进行编辑,并且可以向网络中其他用户主动发出名片;对于好友用户在本地数据库中的名片副本,本地用户可以进行查看、更新、删除、搜索操作;对于陌生人用户的名片,本地用户仅限于请求其名片,而不能有其他权限,如果陌生人用户同意此请求则能够获取其名片,反之则不能获取。

处理状态信息广播的系统行为模型

系统通过使用UDP协议向网络中广播用户的状态信息。状态信息包括用户的名字,以及用户的状态等。通过程序设计也可以获取广播发送方的IP等信息。

系统主界面使用列表视图(List View)显示网络中存在的用户。对用户根据其与本地用户的关系进行了分组,包括好友组与陌生人组。同时对于代表用户的图标使用一个子项目表示其分组;另一个子项目表示其在线或下线状态。

因此,当本地用户接收到状态信息广播时,系统应该根据广播内容即时反映到用户界面中,以供用户作出判断。

数据库设计

数据库使用ACCESS数据库管理系统。数据库中一共有三个表,分别用于存储本地用户的名片数据(LocalUser)、其他用户(好友)的中文名片数据(MyFriendsData)和英文名片数据(MyFriendsDataEn)。存储本地用户名片的表中数据字段全部属于名片信息字段,而其他用户的名片数据表则除此之外还有一个IP字段,用于存储对应用户的IP地址。

为了区别不同的用户,必须使用一个或几个对于每个用户客户端都能够知道的对应于每一个用户客户端的标识,并且这样的对应关系应该能组成一个哈希表式的结构。由于本设计不使用服务器,因此比较容易实现的方法就是使用IP地址来作为这个唯一标识,以IP地址作为标识用户(名片)的依据。

LOGO字段存储的是一个图片文件名,对应用户名片的Logo图片。这个图片文件名存储于本地用户的Images文件夹下,在收到名片数据时提取出包含的Logo图片数据,并由此在本地创建图片文件,然后把图片文件名存储于数据库中。

系统综述

系统采用单纯型P2P架构,没有专用的服务器,各个节点计算机之间直接交互信息。任何一台计算机只要安装本系统,就可以和其他安装本系统的计算机直接进行通信。从服务器和客户端的角度来说,本系统既是一个服务器又同时是一个客户端。

网络通信方面,主要使用TCP协议异步通信方式进行命令和名片数据的传输,而上线下线的通知则使用UDP协议同步方式进行发送和接收。

数据的存储和传输方面,在客户端计算机上使用ACESS数据库进行存储,在网络传输时将数据从数据库中提取出来,转换为XML格式化字符串,然后向目的机器的特定端口发送;接收时转换方向相反。其中Logo图片以Base64编码的形式嵌入XML内进行发送,接收时再进行Base64解码并在机器上创建此图片文件。

系统用到的窗体类一共有6个,分别是:程序的主界面MainForm,修改名片数据的DisplayCardForm,名片查看类CardForm,名片发送向导类Wizard,上线通知类TaskbarNotifier,“关于”对话框AboutForm。

用到的自定义帮助类有3个:ReadWriteObject和ClientNString两个类实例化后的对象用于在异步TCP读取缓冲区时各回调方法之间进行传递,以保存读取缓冲区以及其他有用信息。而ReadXmlIntoDB类则用于,从网络流中读取字节数据并转换为XML格式化字符串后,判断返回内容,并在确定名片信息有效时将接收的名片数据输入或覆盖到数据库的记录中。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有