CN101459697A - 一种共享文件的访问方法和装置 - Google Patents
一种共享文件的访问方法和装置 Download PDFInfo
- Publication number
- CN101459697A CN101459697A CNA2009100761035A CN200910076103A CN101459697A CN 101459697 A CN101459697 A CN 101459697A CN A2009100761035 A CNA2009100761035 A CN A2009100761035A CN 200910076103 A CN200910076103 A CN 200910076103A CN 101459697 A CN101459697 A CN 101459697A
- Authority
- CN
- China
- Prior art keywords
- file
- access
- user
- access request
- metadata information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种共享文件的访问方法和装置,属于计算机系统结构与应用技术领域。所述方法包括:截获用户的访问请求,所述访问请求中携带所述用户访问的文件的元数据信息和所述用户访问的操作类型;根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向;如果是,根据所述用户访问的操作类型对所述用户的访问请求进行处理。所述装置包括:文件系统过滤驱动。通过过滤并拦截对预先设定的需要进行访问重定向的文件及文件夹的访问,将用户的文件访问重定向到P2P网络,从而使用户以访问一般的本地驱动器的文件的形式来访问P2P共享文件,使得不熟悉P2P技术的用户也能方便地访问P2P网络的共享文件。
Description
技术领域
本发明涉及计算机系统结构与应用技术领域,特别涉及一种共享文件的访问方法和装置。
背景技术
目前,人们对于网络的使用越来越普遍。在家里、办公地点或公共场所,人们都可以轻松地连接并使用网络。随着人们对于网络传输速率的不断追求,为了获得更快的网络传输速率,P2P(Peer to Peer,伙伴对伙伴)技术开始被广泛应用。P2P技术摆脱了传统的C(Customer,客户端)/S(Server,服务端)模式的服务,使得用户之间也可以进行数据的交换,充分利用了网络边缘的资源,极大地提高了数据传输的速率。
现有技术中,P2P技术在实现共享数据的交换时,是在客户端安装特定的P2P共享程序,通过这一特定的P2P共享程序的界面来访问全部的共享数据。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺点:
由于P2P技术对于共享文件的访问方式与访问一般的本地驱动器上的文件完全不一样,因此,可能会给不熟悉P2P技术的用户带来很多不便。
发明内容
为了使不熟悉P2P技术的用户也能熟练地使用P2P技术访问共享文件,本发明实施例提供了一种共享文件的访问方法和装置。所述技术方案如下:
一种共享文件的访问方法包括:
截获用户的访问请求,所述访问请求中携带所述用户访问的文件的元数据信息和所述用户访问的操作类型;
根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向;
如果是,根据所述用户访问的操作类型对所述用户的访问请求进行处理。
在所述截获用户的访问请求之前,所述方法还包括:
从已登陆的种子服务器中下载种子文件,所述种子文件携带共享文件的元数据信息;
保存所述共享文件的元数据信息;
相应地,所述根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向,具体包括:
在保存的所述共享文件的元数据信息中,查询是否存在所述用户访问的文件的元数据信息;
如果存在,则判定对所述访问请求进行重定向;
如果不存在,则判定不对所述访问请求进行重定向。
在所述保存所述共享文件的元数据信息之后,所述方法还包括:
根据已保存的所述共享文件的元数据信息,为所述共享文件创建目录结构。
所述根据所述用户访问的操作类型对所述用户的访问请求进行处理,具体包括:
当所述用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
如果有,则从所述文件缓存中获取所述可用数据;
如果没有,则从伙伴对伙伴P2P网络上获取所述可用数据;
将所述可用数据返回给所述用户。
所述从P2P网络上获取所述可用数据,具体包括:
将所述用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取所述可用数据。
一种共享文件的访问装置,包括:文件系统过滤驱动;
所述文件系统过滤驱动包括:
截获模块,用于截获用户的访问请求,所述访问请求中携带所述用户访问的文件的元数据信息和所述用户访问的操作类型;
判断模块,用于根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向;
处理模块,用于如果所述判断模块的判断结果为是,根据所述用户访问的操作类型对所述用户的访问请求进行处理。
所述装置还包括:客户端代理;
所述客户端代理包括:
下载模块,用于从已登陆的种子服务器中下载种子文件,所述种子文件携带共享文件的元数据信息;
保存模块,用于保存所述共享文件的元数据信息;
相应地,所述文件系统过滤驱动还包括:
查询模块,用于在所述保存模块保存的所述共享文件的元数据信息中,查询是否存在所述用户访问的文件的元数据信息;
判定模块,用于根据所述查询模块的查询结果判断所述访问请求是否需要重定向;
如果存在,则判定对所述访问请求进行重定向;
如果不存在,则判定不对所述访问请求进行重定向。
所述文件系统过滤驱动还包括:
创建模块,用于根据所述客户端代理中的所述保存模块保存的所述共享文件的元数据信息,为所述共享文件创建目录结构。
所述文件系统过滤驱动中的判定模块,具体包括:
查询单元,用于当所述用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
获取单元,用于当所述查询单元的查询结果为有时,从所述文件缓存中获取所述可用数据;当所述查询单元的查询结果为无时,从伙伴对伙伴P2P网络上获取所述可用数据;
返回单元,用于将所述获取单元获取到的所述可用数据返回给所述用户。
当所述查询单元的查询结果为无时,所述获取单元具体用于:
将所述用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取所述可用数据。
本发明实施例提供的技术方案带来的有益效果是:
通过文件系统访问重定向的方法,将P2P网络上共享的文件以本地驱动器文件的形式呈现给用户,并过滤、拦截对预先设定的需要进行访问重定向的文件及文件夹的访问,将用户的文件访问重定向到P2P网络,从而使用户可以以访问一般的本地驱动器的文件的形式来访问P2P共享文件,使得不熟悉P2P技术的用户也能方便地访问P2P网络,对用户的使用习惯、便捷性以及应用的透明性而言,具有很大的优势。
附图说明
图1是本发明实施例1中提供的共享文件的访问方法流程图;
图2是本发明实施例2中提供的共享文件的访问方法流程图;
图3是本发明实施例3中提供的共享文件的访问装置结构示意图;
图4是本发明实施例3中提供的另一种共享文件的访问装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种共享文件的访问方法,包括:
步骤101:截获用户的访问请求,该访问请求中携带用户访问的文件的元数据信息和用户访问的操作类型;
步骤102:根据用户访问的文件的元数据信息,判断是否对该访问请求进行重定向;
步骤103:如果是,根据用户访问的操作类型对该用户的访问请求进行处理。
其中,在步骤101之前,该方法还可以包括:
从已登陆的种子服务器中下载种子文件,种子文件携带共享文件的元数据信息;
保存共享文件的元数据信息;
相应地,步骤102具体可以包括:
在保存的共享文件的元数据信息中,查询是否存在用户访问的文件的元数据信息;
如果存在,则判定对访问请求进行重定向;
如果不存在,则判定不对访问请求进行重定向。
步骤101之后该方法还可以包括:
根据保存的共享文件的元数据信息,为共享文件创建目录结构。
步骤103具体可以包括:
当用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
如果有,则从文件缓存中获取可用数据;
如果没有,则从P2P网络上获取可用数据;
将可用数据返回给用户。
其中,步骤103中从P2P网络上获取可用数据,具体可以包括:
将用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取可用数据。
通过文件系统访问重定向的方法,将P2P网络上共享的文件以本地驱动器文件的形式呈现给用户,并过滤、拦截对预先设定的需要进行访问重定向的文件及文件夹的访问,将用户的文件访问重定向到P2P网络,从而使用户可以以访问一般的本地驱动器的文件的形式来访问P2P共享文件,使得不熟悉P2P技术的用户也能方便地访问P2P网络,对用户的使用习惯、便捷性以及应用的透明性而言,具有很大的优势。
实施例2
参见图2,本发明实施例提供了一种共享文件的访问方法,包括:
步骤201:P2P网络中的客户端为其共享文件或共享文件夹建立种子,并将建立好的种子保存在种子服务器上向网络中的其他客户端进行发布;同时,客户端会运行一个tracker(追踪服务器),用于追踪网络中的其他客户端发布的种子信息;
其中,种子的类型包括但不限于BitTorrent(比特流)种子、eMule(电驴)种子、Thurder(迅雷)种子等等。
步骤202:P2P网络中的一个客户端加载客户软件包;
其中,客户软件包由两部分组成,分别是:客户端代理程序和文件系统过滤驱动。
其中,客户端代理程序用于追踪种子的发布信息、登陆种子服务器、进行客户端的身份验证、使用P2P技术从网络上获取共享数据;
文件系统过滤驱动用于过滤并截获客户端用户对于预先设定需要进行访问重定向的文件和/或文件夹的访问请求,并将访问请求交给客户端代理程序,由客户端代理程序从网络上获取相应的可用数据,完成客户端用户对于文件和/或文件夹的访问操作。
步骤203:客户端访问种子服务器,获取共享文件的元数据信息;
客户端通过客户端代理程序追踪种子的发布信息、登陆种子服务器,通过身份验证后,从种子服务器中获取共享文件和/或共享文件夹的名称、大小、创建时间、路径等元数据信息,这些元数据信息均包含在P2P种子内。
步骤204:客户端根据获取到的共享文件的元数据信息,通过客户端代理程序在客户端本地创建一个共享文件夹及该文件夹下的共享文件的目录结构;
同时,将获取到的元数据信息进行保存,并传递给文件系统过滤驱动。文件系统过滤驱动利用接收到的元数据信息设置相应的文件和目录为待过滤的文件和目录。
步骤205:客户端的用户在客户端上访问文件或文件夹;
其中,用户在某一客户端上对于P2P的其他客户端的访问,可以像在本地访问的形式那样,访问某个文件或某个文件夹。对于用户在本地计算机上访问的文件和/或文件夹,有可能是步骤204中创建的、位于P2P的其他客户端上的文件和/或文件夹。
步骤206:文件系统过滤驱动截获客户端用户对于文件系统的所有访问请求,根据客户端代理程序传递的元数据信息,判断用户的本次访问是否需要重定向:
这里需要说明的是,用户的访问请求中可以携带用户期望访问的文件或文件夹的元数据信息,其中可以包括名称、大小、创建时间、路径等信息。通过在文件系统过滤驱动中查询被设置为待过滤的文件和目录的元数据信息,如果存在用户的访问请求中携带的用户期望访问的文件或文件夹的元数据信息,则文件系统过滤驱动判定用户的本次访问需要重定向,执行步骤207;如果不存在,则文件系统过滤驱动判定用户的本次访问不需要重定向,并将用户的本次访问直接交由底层的驱动进行处理。
例如,用户的访问请求中携带用户期望访问的文件或文件夹的路径,在客户端代理程序为共享文件创建的目录结构中,查询是否存在用户期望访问的文件或文件夹的路径;如果存在,则文件系统过滤驱动判定用户的本次访问需要重定向,执行步骤207;如果不存在,则文件系统过滤驱动判定用户的本次访问不需要重定向,并将用户的本次访问直接交由底层的驱动进行处理。
再例如,用户的访问请求中还可以携带用户期望访问的文件或文件夹的名称,在文件系统过滤驱动中查询被设置为待过滤的文件和目录的名称,如果存在用户的访问请求中携带的用户期望访问的文件或文件夹的名称,则文件系统过滤驱动判定用户的本次访问需要重定向,执行步骤207;如果不存在,则文件系统过滤驱动判定用户的本次访问不需要重定向,并将用户的本次访问直接交由底层的驱动进行处理。
这里需要说明的是:文件系统过滤驱动属于中间层驱动,因此I/O(Input/Output,输入/输出)请求包要经过它的过滤后到达最底层设备驱动,进而被处理。文件系统过滤驱动能够监视、检查、修改、截获所有的I/O请求包,因此具有截获和改变文件系统的操作能力,从而可以达到对本地文件请求重定向到P2P网络的目的。
步骤207:根据用户的访问操作类型对用户的访问进行处理:
如果用户的本次访问是打开、关闭或查询文件信息等不是读取文件内容的操作,文件系统过滤驱动根据客户端代理程序传递的元数据信息对本次访问直接进行处理,并按照用户需要的形式返回给用户;
如果用户的本次访问是读操作,文件系统过滤驱动将该访问请求发送给客户端代理程序,由客户端代理程序查询本地的文件缓存,查询该数据是否已经可用:
如果是,则读取缓存中的可用数据后发送给文件系统过滤驱动,由文件系统过滤驱动对用户的本次访问进行处理,并按照用户需要的形式返回给用户;
如果不是,则将用户的访问请求转换为P2P文件请求,并通过网络进行P2P的下载,获取用户所请求的数据,并将下载的数据发送给文件系统过滤驱动,由文件系统过滤驱动完成相应的处理,并按照用户需要的形式返回给用户。
这里需要说明的是:为了加速数据的获取,可以同时从种子服务器和其它客户端那里下载数据。
通过文件系统访问重定向的方法,将P2P网络上共享的文件以本地驱动器文件的形式呈现给用户,并过滤、拦截对预先设定的需要进行访问重定向的文件及文件夹的访问,将用户的文件访问重定向到P2P网络,从而使用户可以以访问一般的本地驱动器的文件的形式来访问P2P共享文件,使得不熟悉P2P技术的用户也能方便地访问P2P网络,对用户的使用习惯、便捷性以及应用的透明性而言,具有很大的优势。
实施例 3
参见图3,本发明实施例提供了一种共享文件的访问装置,包括:文件系统过滤驱动301;
文件系统过滤驱动301包括:
截获模块301A,用于截获用户的访问请求,访问请求中携带用户访问的文件的元数据信息和用户访问的操作类型;
判断模块301B,用于根据用户访问的文件的元数据信息,判断是否对访问请求进行重定向;
处理模块301C,用于如果判断模块301B的判断结果为是,根据用户访问的操作类型对用户的访问请求进行处理。
进一步地,参见图4,该装置还包括客户端代理302;
客户端代理302包括:
下载模块302A,用于从已登陆的种子服务器中下载种子文件,种子文件携带共享文件的元数据信息;
保存模块302B,用于保存共享文件的元数据信息;
相应地,文件系统过滤驱动301还包括:
查询模块301D,用于在保存模块302B中保存的共享文件的元数据信息中,查询是否存在用户访问的文件的元数据信息;
判定模块301E,用于根据查询模块的查询结果判断访问请求是否需要重定向;
如果存在,则判定对访问请求进行重定向;
如果不存在,则判定不对访问请求进行重定向。
进一步地,该文件系统过滤驱动301还可以包括:
创建模块301F,用于根据共享文件的元数据信息,为共享文件创建目录结构。
其中,文件系统过滤驱动301中的判定模块301E,具体包括:
查询单元,用于当用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
获取单元,用于当查询单元的查询结果为有时,从文件缓存中获取可用数据;当查询单元的查询结果为无时,从伙伴对伙伴P2P网络上获取可用数据;
返回单元,用于将获取单元获取到的可用数据返回给用户。
其中,当查询单元的查询结果为无时,获取单元具体用于:
将用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取可用数据。
具体的,文件系统过滤驱动301的具体实现可以为:
文件过滤驱动程序的入口点是DriverEntry函数,这个函数在驱动中的地位相当于C程序中的main()函数。当驱动被加载时,会从DriverEntry开始执行,直到DriverEntry返回后,驱动才开始正常工作,对IRP进行分类处理。因此,DriverEntry函数中主要是一些全局变量的初始化和驱动本身的设置。
DriverEntry有两个参数:一、参数DriverObject,是系统在加载过滤驱动时分配的;二、参数RegisteryPath是用于记录过滤驱动相关参数的注册表路径。两个参数都由系统分配并通过这两个参数传递给DriverEntry,无需用户传入。
驱动对象DriverObject拥有一组分派函数指针,称为dispatch functions。不同功能的过滤驱动仅仅是分派函数实现的不同。
首先,DriverEntry默认将所有IRP的分派函数都指定为SfPassThrough,这个函数的定义是将IRP原封不动的发送到下层驱动;
接着,为需要特别处理的IRP指定分派函数,完成不同的处理功能。
例如:指定分派函数SfCreate来处理Create IRP,指定分派函数SfRead来处理Read IRP,指定分派函数SfQueryInfo来处理Query InfoIRP等等。未特别指定分派函数的IRP,用默认分派函数SfPassThrough处理。
根据需要在分派函数中处理各种IRP请求,主要方式有:
(a)调用IoSkipCurrentIrpStackLocation和IoCallDriver,将IRP原封不动的发送到下一层驱动。这种方式用来处理不符合过滤条件的IRP。
(b)调用IoCompleteRequest完成这个IRP,不发送到下一层驱动,然后返回成功状态STATUS_SUCCESS;这种方式用来处理符合过滤条件的Read/QueyInfo/Directory Control IRP。
(c)调用IoCompleteRequest完成这个IRP,不发送到下一层驱动,然后返回某种失败状态(非STATUS_SUCCESS,有很多种失败的类型)。
(d)修改这个IRP中的某些域,再发送到下一层驱动。
IOCTL_USERMESSAGE用于客户端代理程序与驱动之间的数据沟通。一般情况下调用DeviceIoControl,输出参数为空,只能实现客户端代理程序向驱动的单向数据传输,而驱动向客户端代理程序发出通知并传输数据是不能实现的。而在IOCTL_USERMESSAGE的实现中,输出参数不为空,DeviceIoControl的最后一个参数(一个OVERLAPPED变量的指针)也不为空(MSDN中说最后一个OVERLAPPED参数应该设置为空,但是实际上是可以利用它的)。
OVERLAPPED结构可用于异步控制访问设备,结构中有一个事件成员变量event,客户端代理程序清除这个事件的状态,然后将这个OVERLAPPED变量以DeviceIoControl的形式传给驱动,等待这个Device Control IRP被完成(此时事件event被置为signaled);驱动将客户端代理程序发出的Device Control IRP的状态置为pending,并将它们存入一个先入先出的队列;当过滤到文件或目录、需要通知客户端代理程序时,驱动填充这个Device Control IRP的输出参数,再完成这个IRP(这时事件event会自动被置为singaled),客户端代理程序立即得到通知,即可从输出参数地址处读出驱动输出的数据。换句话说,客户端代理程序与驱动的互传数据都是通过DeviceIoControl完成的,客户端代理程序给驱动的数据通过DeviceIoControl()的输入参数来实现,驱动给客户端代理程序的数据通过DeviceIoControl()的输出参数来实现。
在过滤驱动中,动态维护着一个很重要的Device Control IRP队列,队列中的IRP都是客户端代理程序之前传入但是却尚未被完成的Device Control IRP,它们的状态都是pending。一般而言,驱动要实时通知客户端代理程序并向代理程序传递数据,是办不到的;而这个Device Control IRP队列却完全可以做到这点,因此此队列对于整个系统的实现是至关重要的。
为了保证驱动随时都有可用的IRP在队列中而不至于严重的阻塞,当代理程序启动的时候,会首先向驱动发送一定数目(目前设为5000)的Device ControlIRP。
对于过滤驱动的分派函数,这里以Create IRP的分派函数为例进行说明:
Create IRP的分派函数是SfCreate。Create IRP的作用是创建或打开一个文件或目录。在系统访问一个文件或目录之前,首先会发出针对它的Create IRP,之后才是Query Info IRP。针对同一文件或目录,可能发出多个Create IRP,它们指向的文件对象地址可以不相等。Create IRP和Cleanup/Close IRP总是成对出现的。
文件系统过滤驱动都是以操作的文件的路径作为过滤条件的,但是在过滤到一般IRP(如查询、设置、读、写)时,查询文件路径确实很困难的,可能会使系统进入死锁或者蓝屏,而在Create IRP的分派函数中可以成功得到文件的设备路径,克服上述问题:
(a)对于文件:在Create IRP的分派函数中查询文件全路径;以它的文件对象的地址作为键值,将它的文件路径存入一个全局哈希表中;当过滤其它IRP时,在哈希表中查询文件对象地址,如果存在,则读取出文件全路径,与过滤文件的路径进行比较。
(b)对于目录:在Create IRP的分派函数中查询目录全路径,将文件对象地址存入一个全局变量的数组中(设为A),其中,A[i]代表序号为i的过滤目录的文件对象地址。当过滤其他IRP时,首先在数组A中查找文件对象地址,如果找到,即找到目录的序号,设为index。则目录的路径是过滤目录名全局变量数组的第index个。
Create IRP的分派函数的主要流程如附图3。其中,设置完成例程的目的是使下层驱动在完成此Create请求之后,重新返回到此分派函数上下文中,此时下层驱动已经将CREATE IRP中相应的数据域填充好。
从下层驱动返回后,调用函数ObQueryNameString查询文件的设备全路径,这个调用返回的结果是设备名而不是盘符,形如:
“\Device\HardDiskVolume1\MyDirectory\MyFile.Name”。
调用ObQueryNameString得到文件名需要注意以下两件事:
(a)必须在Create IRP完成之后(即完成例程返回之后)才可以调用ObQueryNameString。如果在sfCreate函数的早期调用,只能得到文件的前半部分设备路径,而不能得到文件名,形如:“\Device\HardDiskVolume1”。
(b)只能在CREATE IRP和CLEANUP IRP的分派函数中调用ObQueryNameString,否则将会使系统进入死锁。
得到文件全路径之后,就要将它与过滤条件相比较,判断是不是要过滤的文件或目录。过滤条件在Device Control IRP的分派函数中已经建立好。
如果是,则将它添加到哈希表中。在其它的IRP分派函数中是通过查询哈希表来获得文件全路径。因为一组打开/关闭的操作之间,文件对象的地址是不变的,可用来作为哈希表的键值。查询到文件路径后,和全局变量中的过滤条件做比较。
具体的,客户端代理302实现与文件系统过滤驱动301交互的方法可以为:
在客户端代理程序中使用了P2P下载模块来进行数据的传输,其使用了libtorrent库的实现。
libtorrent是用C++写的BitTorrent库,遵从BitTorrent协议。libtorrent客户端启动时需先新建一个session实例,session执行监听等操作。在读入一个torrent种子文件后,通过解析文件、新建任务之后,session中便加入了一个torrent_handle结构,这个torrent_handle对应着被读入解析的torrent种子,用来完成一个下载任务。
torrent_handle结构提供了对任务下达命令、查询任务是否完成、获取任务信息的接口,比如pause,resume,set_upload_limit,set_download_limit,force_reannounce,get_torrent_info等,但是不能通过torrent_handle对下载过程的细节进行查询和控制,这些是内部使用的,由torrent类来负责。
torrent类负责根据下载策略选择接所要下载的分块。同时,它还可以对分块单独进行读写操作,也负责写回已经下载完的分块。在下载过程中,它还负责和邻居结点进行交互,交换分块信息,进行相互下载。
下面是libtorrent中几个重要的类,在实现接口的过程中用到了这些类的实例。
class session位于session.hpp/cpp,它负责管理所有的torrent下载任务。
class torrent位于torrent.hpp/cpp,它负责维护某一下载任务,包括与邻结点的交互,下载,做种子等等。
struct torrent_handle位于torrent_handle.hpp/cpp,它是外部调用的接口,通过torrent_handle可以实现对某一下载任务的控制和访问。
class torrent_info位于torrent_info.hpp/cpp,它维护了torrent任务的信息,通过访问它可以得到任务信息,比如是否为多文件,哈希值是多少等等。
class piece_picker位于piece_picker.hpp/cpp piece,它里面主要是对下载的顺序管理,以及下载策略的选择。其中,下载策略是在函数piece_picker::files_checked()中进行设置。
class storage,class piece_manager位于storage.hpp/cpp,这两个类负责分块的写入和读取。
文件系统过滤驱动在截获对文件的访问请求之后,就会通过客户端代理程序调用P2P模块来获取远程文件。如果该文件已经下载了,则直接读取本地缓存的文件。当然,本地缓存文件作为整个系统的P2P网络的一部分,也可以向其它用户提供下载服务。
通过文件系统访问重定向的方法,将P2P网络上共享的文件以本地驱动器文件的形式呈现给用户,并过滤、拦截对预先设定的需要进行访问重定向的文件及文件夹的访问,将用户的文件访问重定向到P2P网络,从而使用户可以以访问一般的本地驱动器的文件的形式来访问P2P共享文件,使得不熟悉P2P技术的用户也能方便地访问P2P网络,对用户的使用习惯、便捷性以及应用的透明性而言,具有很大的优势。
本发明实施例可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,例如,路由器的硬盘、缓存或光盘中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1、一种共享文件的访问方法,其特征在于,包括:
截获用户的访问请求,所述访问请求中携带所述用户访问的文件的元数据信息和所述用户访问的操作类型;
根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向;
如果是,根据所述用户访问的操作类型对所述用户的访问请求进行处理。
2、如权利要求1所述的共享文件的访问方法,其特征在于,在所述截获用户的访问请求之前,所述方法还包括:
从已登陆的种子服务器中下载种子文件,所述种子文件携带共享文件的元数据信息;
保存所述共享文件的元数据信息;
相应地,所述根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向,具体包括:
在保存的所述共享文件的元数据信息中,查询是否存在所述用户访问的文件的元数据信息;
如果存在,则判定对所述访问请求进行重定向;
如果不存在,则判定不对所述访问请求进行重定向。
3、如权利要求2所述的共享文件的访问方法,其特征在于,在所述保存所述共享文件的元数据信息之后,所述方法还包括:
根据已保存的所述共享文件的元数据信息,为所述共享文件创建目录结构。
4、如权利要求1所述的共享文件的访问方法,其特征在于,所述根据所述用户访问的操作类型对所述用户的访问请求进行处理,具体包括:
当所述用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
如果有,则从所述文件缓存中获取所述可用数据;
如果没有,则从伙伴对伙伴P2P网络上获取所述可用数据;
将所述可用数据返回给所述用户。
5、如权利要求4所述的共享文件的访问方法,其特征在于,所述从P2P网络上获取所述可用数据,具体包括:
将所述用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取所述可用数据。
6、一种共享文件的访问装置,其特征在于,包括:文件系统过滤驱动;
所述文件系统过滤驱动包括:
截获模块,用于截获用户的访问请求,所述访问请求中携带所述用户访问的文件的元数据信息和所述用户访问的操作类型;
判断模块,用于根据所述用户访问的文件的元数据信息,判断是否对所述访问请求进行重定向;
处理模块,用于如果所述判断模块的判断结果为是,根据所述用户访问的操作类型对所述用户的访问请求进行处理。
7、如权利要求6所述的共享文件的访问装置,其特征在于,所述装置还包括:客户端代理;
所述客户端代理包括:
下载模块,用于从已登陆的种子服务器中下载种子文件,所述种子文件携带共享文件的元数据信息;
保存模块,用于保存所述共享文件的元数据信息;
相应地,所述文件系统过滤驱动还包括:
查询模块,用于在所述保存模块保存的所述共享文件的元数据信息中,查询是否存在所述用户访问的文件的元数据信息;
判定模块,用于根据所述查询模块的查询结果判断所述访问请求是否需要重定向;
如果存在,则判定对所述访问请求进行重定向;
如果不存在,则判定不对所述访问请求进行重定向。
8、如权利要求7所述的共享文件的访问装置,其特征在于,所述文件系统过滤驱动还包括:
创建模块,用于根据所述客户端代理中的所述保存模块保存的所述共享文件的元数据信息,为所述共享文件创建目录结构。
9、如权利要求6所述的共享文件的访问装置,其特征在于,所述文件系统过滤驱动中的判定模块,具体包括:
查询单元,用于当所述用户访问的操作类型为读操作时,查询本地的文件缓存中是否有可用数据;
获取单元,用于当所述查询单元的查询结果为有时,从所述文件缓存中获取所述可用数据;当所述查询单元的查询结果为无时,从伙伴对伙伴P2P网络上获取所述可用数据;
返回单元,用于将所述获取单元获取到的所述可用数据返回给所述用户。
10、如权利要求9所述的共享文件的访问装置,其特征在于,当所述查询单元的查询结果为无时,所述获取单元具体用于:
将所述用户的访问请求转换为P2P文件请求,通过网络进行P2P的下载,获取所述可用数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100761035A CN101459697B (zh) | 2009-01-07 | 2009-01-07 | 一种共享文件的访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100761035A CN101459697B (zh) | 2009-01-07 | 2009-01-07 | 一种共享文件的访问方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101459697A true CN101459697A (zh) | 2009-06-17 |
CN101459697B CN101459697B (zh) | 2012-01-04 |
Family
ID=40770320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100761035A Active CN101459697B (zh) | 2009-01-07 | 2009-01-07 | 一种共享文件的访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101459697B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930449A (zh) * | 2009-06-22 | 2010-12-29 | 三星电子株式会社 | 客户机、代理服务器和用于提供云存储器的方法 |
CN102118442A (zh) * | 2011-02-21 | 2011-07-06 | 清华大学 | 一种访问Web资源的方法及装置 |
CN102655506A (zh) * | 2012-04-11 | 2012-09-05 | 北京百纳威尔科技有限公司 | 资源共享方法及设备 |
WO2012140671A2 (en) * | 2011-04-11 | 2012-10-18 | Ineda Systems Pvt. Ltd | File system sharing |
CN102768678A (zh) * | 2012-06-14 | 2012-11-07 | 奇智软件(北京)有限公司 | 文件操作方法及装置 |
CN102779244A (zh) * | 2011-05-11 | 2012-11-14 | 奇智软件(北京)有限公司 | 一种文件操作的执行方法及装置 |
CN103077243A (zh) * | 2013-01-16 | 2013-05-01 | 北京数码视讯科技股份有限公司 | 文件系统访问的处理方法及系统 |
CN104660624A (zh) * | 2013-11-18 | 2015-05-27 | 珠海金山网络游戏科技有限公司 | 文件共享方法、装置及移动设备 |
CN108351797A (zh) * | 2015-11-02 | 2018-07-31 | 微软技术许可有限责任公司 | 控制与中间目录相关联的重解析行为 |
CN108418802A (zh) * | 2018-02-02 | 2018-08-17 | 大势至(北京)软件工程有限公司 | 一种共享文件的访问控制方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769881B2 (en) * | 2003-01-24 | 2010-08-03 | Hitachi, Ltd. | Method and apparatus for peer-to peer access |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
CN1941736A (zh) * | 2005-09-30 | 2007-04-04 | 西门子通信技术(北京)有限公司 | 一种内容分发系统及其用户请求重定向方法 |
CN101075879B (zh) * | 2006-06-13 | 2012-04-25 | 腾讯科技(深圳)有限公司 | 一种数据下载方法 |
-
2009
- 2009-01-07 CN CN2009100761035A patent/CN101459697B/zh active Active
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930449B (zh) * | 2009-06-22 | 2014-11-26 | 三星电子株式会社 | 客户机、代理服务器和用于提供云存储器的方法 |
CN101930449A (zh) * | 2009-06-22 | 2010-12-29 | 三星电子株式会社 | 客户机、代理服务器和用于提供云存储器的方法 |
US8762480B2 (en) | 2009-06-22 | 2014-06-24 | Samsung Electronics Co., Ltd. | Client, brokerage server and method for providing cloud storage |
CN102118442A (zh) * | 2011-02-21 | 2011-07-06 | 清华大学 | 一种访问Web资源的方法及装置 |
WO2012140671A3 (en) * | 2011-04-11 | 2013-01-03 | Ineda Systems Pvt. Ltd | File system sharing |
US9836478B2 (en) | 2011-04-11 | 2017-12-05 | Ineda Systems Inc. | File system sharing |
WO2012140671A2 (en) * | 2011-04-11 | 2012-10-18 | Ineda Systems Pvt. Ltd | File system sharing |
CN102779244A (zh) * | 2011-05-11 | 2012-11-14 | 奇智软件(北京)有限公司 | 一种文件操作的执行方法及装置 |
WO2012152210A1 (zh) * | 2011-05-11 | 2012-11-15 | 北京奇虎科技有限公司 | 一种文件操作的执行方法及装置 |
CN102779244B (zh) * | 2011-05-11 | 2015-03-25 | 奇智软件(北京)有限公司 | 一种文件操作的执行方法及装置 |
WO2013152677A1 (zh) * | 2012-04-11 | 2013-10-17 | 北京百纳威尔科技有限公司 | 资源共享方法及设备 |
CN102655506A (zh) * | 2012-04-11 | 2012-09-05 | 北京百纳威尔科技有限公司 | 资源共享方法及设备 |
CN102768678B (zh) * | 2012-06-14 | 2014-11-05 | 北京奇虎科技有限公司 | 文件操作方法及装置 |
CN102768678A (zh) * | 2012-06-14 | 2012-11-07 | 奇智软件(北京)有限公司 | 文件操作方法及装置 |
CN103077243A (zh) * | 2013-01-16 | 2013-05-01 | 北京数码视讯科技股份有限公司 | 文件系统访问的处理方法及系统 |
CN103077243B (zh) * | 2013-01-16 | 2016-03-09 | 北京数码视讯科技股份有限公司 | 文件系统访问的处理方法及系统 |
CN104660624A (zh) * | 2013-11-18 | 2015-05-27 | 珠海金山网络游戏科技有限公司 | 文件共享方法、装置及移动设备 |
CN108351797A (zh) * | 2015-11-02 | 2018-07-31 | 微软技术许可有限责任公司 | 控制与中间目录相关联的重解析行为 |
CN108351797B (zh) * | 2015-11-02 | 2021-08-31 | 微软技术许可有限责任公司 | 用于控制与中间目录相关联的重解析行为的方法和系统 |
CN108418802A (zh) * | 2018-02-02 | 2018-08-17 | 大势至(北京)软件工程有限公司 | 一种共享文件的访问控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101459697B (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101459697B (zh) | 一种共享文件的访问方法和装置 | |
EP4034998B1 (en) | User-specific data manipulation system for object storage service based on user-submitted code | |
CN104767834B (zh) | 用于加速计算环境到远程用户的传送的系统和方法 | |
US9742845B2 (en) | Multi-service cloud storage decision optimization process | |
CN103403707B (zh) | 用于数据库代理请求交换的系统和方法 | |
CN103765851B (zh) | 用于到任何服务的透明的层2重定向的系统和方法 | |
US8799473B2 (en) | Concurrent web based multi-task support for computer system | |
CN103116618B (zh) | 基于客户端持久缓存的远程文件系统镜像方法及系统 | |
US9672071B2 (en) | Method and system for distributed processing of HTTP requests | |
US11023416B2 (en) | Data access control system for object storage service based on owner-defined code | |
US9032016B2 (en) | Communication method and apparatus | |
CN102217273A (zh) | 用于应用流畅性策略的系统和方法 | |
CN114586011B (zh) | 将所有者指定的数据处理流水线插入到对象存储服务的输入/输出路径 | |
CN103731508A (zh) | 一种基于云存储的网络硬盘装置及其管理方法 | |
JP2006510976A5 (zh) | ||
US20210097193A1 (en) | Code execution environment customization system for object storage service | |
US11222083B2 (en) | Web crawler platform | |
CN114756519A (zh) | 与无状态同步节点的托管文件同步 | |
CN103077243A (zh) | 文件系统访问的处理方法及系统 | |
US20150095976A1 (en) | Virtual access to network services | |
US10496590B2 (en) | Enabling redirection policies to be applied based on the windows class of a USB device | |
US20090327303A1 (en) | Intelligent allocation of file server resources | |
CN104199926B (zh) | 文件归档实现方法和装置以及文件访问方法和装置 | |
RU2656739C1 (ru) | Способ и система хранения данных | |
KR100879880B1 (ko) | 전자캐비넷(e-Cabinet)서비스 제공방법 및시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |