上述P2P节点之间的数据通讯功能是基于一个简单的开发框架实现的,该框架中包括除用户界面之外的两个重要的功能模块。
3.1节点模块
节点模块管理着网络节点的全部操作功能。该模块包含一个用于监听连接请求和启动消息处理线程的主循环。借助该框架进行P2P应用开发的程序员可以在节点模块中注册新的消息处理句柄(函数或方法),该模块中的主循环会根据节点接收到的消息类型分配相应的消息处理句柄进行消息的处理。一个网络节点启动初始化时会提供一个监听连接请求的端口,一个IP地址以及一个节点标识符。
节点模块也维护着一个已知节点列表,该列表的大小是有限制的,节点可以通过标识符或者在列表中的顺序位置来访问这些已知节点。
除了存储各种不同类型消息的处理句柄之外,节点模块还存储了程序员编写的用来决定如何路由消息的函数。节点模块也能以固定间隔允许固定的操作程序。
3.2节点连接模块
节点连接模块封装了用于连接其它节点的套接字。该框架使用TCPIP协议在节点之间进行通讯。节点连接模块提供了可以让程序员非常容易发送和接收消息的各种方法,这些方法保证了消息的编码格式的正确。另外,节点连接模块也可以侦测到P2P数据传输过程中出现的各种错误。
该框架中定义的消息包含一个8字节长度的消息头,该消息头中有4个字节用来存放消息的类型标识,另外4字节用来存放一个表示消息中数据长度的整数。4字节的消息类型标识可以被看作是字符串。因此,程序员可以用自定义的长度为4-T-节的字符串来标识各种不同的消息类型。当节点中的主循环接收到消息后,它就会根据消息类型将消息分配给正确的处理句柄。消息句柄是一个可以接收节点连接模块对象引用和消息类型的函数,句柄可以根据消息类型被注册。目前,该框架被设计为一个消息仅对应一个句柄对象的1:1模式。当节点模块接收到一个连接请求时,它就会建立一个节点连接模块对象,该对象读取其它节点发来的消息类型,启动一个线程处理消息中的数据,当消息句柄完成它的任务后,节点连接自动关闭。
4结语 P2P应用程序的开发难度较大,借助于框架技术可以大大简化开发过程,提高开发效率。本文提出的这个简单的开发框架对P2P应用程序的开发起到了一定的改进作用。
信息发布:广州名易软件有限公司 http://www.myidp.net