网上虚拟硬盘系统,进来看看。谁能搞定可赚到10000元!(50分)

  • 主题发起人 主题发起人 sumingfei
  • 开始时间 开始时间
S

sumingfei

Unregistered / Unconfirmed
GUEST, unregistred user!
它实现的功能简单的讲就是实现将一个网络上的FTP(File transfer protocol文件传输协议) 站点做成个人pc上的一个类似映射盘的咚咚。但双击进入后应该是进入软件的界面,使用的功能应该是类似文件管理器的界面。力图使大家能够实现直接远程打开和编辑Ftp站点上的文件或者保存文件,而不必经过传统的“上传”“下载”的步骤。

特点:
1、 可以通过应用软件使用“save as”功能实现保存文件。
2、 可以实现在两个不同的Ftp站点间或一个站点的两个文件夹之间随意拖放文件。
4、 可以通过双击远程Ftp站点上的文件来实现编辑和保存。
5、 可以使用标7、 准的windows的“file find”来进行对远程Ftp站点的文件和目录搜索。
6、 Transfer complete directory structures不知道什么意思
7、 可能是将远程Ftp站点上的文件系统转换成PC的目录结构。
8、 可以为您常用的Ftp站点建立一个类似收藏夹的功能。
9、 使用FTP Site Wizard(不知道怎么翻译,反正就是类似引导一类的)可以轻易的对一个Ftp站点建立连接和进行设置。
10、 对目录使用了缓存,令用户可以离线浏览Ftp站点。

高级的实现功能:
支持众多的防火墙类型,包括了:RAPTOR、WINGATE、CHECKPOINT,另外还包括了不同的代理服务器(Proxy servers)包括 MS_Proxy

支持众多的主机类型,包括:
UNIX (most variants including L8 and BSD)
WinNT v3.51, v4.0 (both DOS and UNIX style directory listings)
VMS (many variants, VMS-MultiNET, OPEN-VMS)
VM & VM-CMS
NetWare
OS/2
WFTPD
WAR-FTP
HellSoft FTP Server
FTP Software's FTP Server
AppleShare
MPEiX (HP-3000)
解决了符号链接。
Passive Mode Support
Send FTP initialization commands(发送FTP指令)

系统需求:
操作系统:Windows 95/98
Cpu:486或更好
内存:32M
硬盘空间:20M



然后是Internet Neighborhood?
它实现的功能主要就是将Ftp和Windows Explorer 紧密完整的结合在一起。也就是说将Ftp站点结合入网上邻居内。当客户使用的时候感觉完全就是在使用网上邻居一样。

特点:
1、 可以使用简单的拖放实现网页的轻易上传。
2、 重启机器将中断文件的传输。
3、 将Ftp服4、 务器的信息完全转换成文件结构
5、 可以为您常用的Ftp站点做成类似收藏夹的功能。
6、 使用FTP Site Wizard可以轻易的对一个Ftp站点建立连接和进行设置。
7、 对目录使用了缓存,8、 令用户可以离线浏览Ftp站点。

高级的实现功能:
Multi-threaded transfer manager 多点传输管理
支持众多的防火墙类型,包括了:RAPTOR、WINGATE、CHECKPOINT,另外还包括了不同的代理服务器(Proxy servers)包括 MS_Proxy
支持众多的主机类型,包括:
UNIX (most variants including L8 and BSD)
WinNT v3.51, v4.0 (both DOS and UNIX style directory listings)
VMS (many variants, VMS-MultiNET, OPEN-VMS)
VM & VM-CMS
NetWare
OS/2
WFTPD
WAR-FTP
HellSoft FTP Server
FTP Software's FTP Server
AppleShare
MPEiX (HP-3000)
解决了符号链接。
Passive Mode Support (支持被动模式)
Send FTP initialization commands(发送FTP指令)
Index File support (支持索引文件)

系统需求同上




95/98 文件 IO 操作的程序,对我们应该会有些启发。



网上硬盘客户端程序分析:

1. 需求:

映射 FTP站点为本地逻辑驱动器,使用户操作远端站点就象使用本地硬盘,
实现文件的适时拖放拷贝、移动等操作。

2. 可行性:

使用 windows 的映射驱动器系统功能可以把网络资源映射为本地驱动器,
后台文件的操作(拷贝、移动等)用Hook技术(VxD)拦截转换为FTP的上传、下
载操作。

3. 程序实现:

1) 用Hook技术(VxD)拦截文件操作,判断是否对映射驱动器操作。
2) 如果不是,不管它,让 windows 操作。
3) 如果是,接管操作,转化为网络上传、下载等动作。
4) 处理返回结果给 windows 显示。

4. 程序流程:

系统运行时安装VxD(Hook) --> 用户登录(密码验证、远程登录)
-->安装Hook(或启动时安装) --> 监视系统操作 -->
拦截操作 --> 转化操作(远程、或读本地缓存) --> 返回结果

5. 技术难点:

主要的技术难点就在于拦截 windows 系统操作,不过我相信我们马上
就可以解决了。:)


1,映射驱动器,直接利用Subst(从dos直到W2K都有)将我们设定的临时目录虚拟为一个驱动器, 盘符可由用户决定,也可由系统自行决定,临时目录中放的就是FTP站点上的目录结构与文件,但我们不可能将每一个文件都下载,这里不妨用一点小手段,Delphi中的NMFTP控件的FTPDirectoryList属性记录了当前目录下的目录文件,我们可以在本地临时目录中建相应的目录与零字节的文件,这招够损吧!:))这样一来不是也实现了KnoWare提供的离线浏览吗?呵呵呵!
注意:并不是一次性将整个FTP站点的目录结构都在本地临时目录中建一次,只有当用户访问一个目录时才建,至于访问文件,则交由后面的OLE服务器处理。

2,利用CopyHook(钩子)来拦截Windows对文件或目录的操作,关于这个Delphi中有个例子,不过它只拦截对目录的操作,我想改进一下应当也可以拦截对文件的操作

function TCopyHook.CopyCallBack(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar;
dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT;
// This is the method which is called by the shell for folder operations
const
ConfirmMessage = 'Are you sure you want to %s ''%s''?';
var
Operation: string;
name1,name2:string;
begin
case wFunc of
FO_COPY:
Operation := 'copy';
FO_DELETE:
Operation := 'delete';
FO_MOVE:
Operation := 'move';
FO_RENAME:
Operation := 'rename';
else
Operation := 'continue this operation on'
end;

// confirm operation

if Operation <>'rename' then //以rename为例
Result :=6
else
begin
if (pos('x:/',LowerCase(pszSrcFile))=0) or (pos('x:/',LowerCase(pszDestFile))=0) then
//判断是否是我们映射的驱动器,X:为我们映射的驱动器,如不是,由Windows自行了断:)
Result :=6
else //如是,则交由我们处理,可另外写一个OLE服务器,先判断OLE服务器是否已启动,如未启动,则启动之
begin
if not Assigned(srvtest) then
srvtest :=Coftppro.Create ; //此名运行时有问题,出现读地址错误(W2K),可能是不能在这里创建OLE服务器,不知哪位能处理这个问题?
name1 :=pszSrcFile ; //pszSrcFile 源目录名
name2 :=pszDestFile ; //pszDestFile 目的目录名
srvtest.rename(name1,name2) ; //调用OLE服务器中的方法,以实现FTP相应功能
result :=2 ; //返回2表示不再由Windows插手
end;
end;
end;

优点:
1,占用内存极小,整个系统使用起来时就一个 OLE服务器在运行,其余都交由Windows自行处理,岂不美哉:))
2,可离线浏览

难点:
1,HOOK的编写,怎样拦截Windows新建文件夹,访问一个文件夹以及对文件的操作
2,HOOK中启动OLE服务器的问题

提示:可以直接利用Delphi的这个例子进行HOOK的编写
路径:Delphi安装目录/Delphi5/Demos/Activex/Shellext/copyhook.dpr

至此,整个系统就此完成了

这里还有一篇文章介绍 Filter Driver,大家看看:http://www.wdj.com/archive/1010/feature.htm

//--------------------------------------------
如果有十足把握,请致电:0752-6613311(找苏明飞)
 
据俺所知,高版本的windows自己就支持这个功能啊
可以直接在资源管理器中打开远程ftp目录,就象操作本地目录一样。
 
您说的这个与 WebDav(www.webdav.org) 有什么不同。
除了 WebDav 是基于http协议,而不是 ftp。
 
从IE4.0的时候就支持这个了!如果用你这个东西还得装个客户端我想没有几个人会用的。
如果是Java Applet或者ActiveForm之类的我还会去试试。
就象一些语音聊天室,需要装客户端的现在不都没人用了么。
 
这么厉害
 
多人接受答案了。
 
后退
顶部