2012-03-05 77 views
0

我正在寻找在C++中创建一个允许客户端本质上挂载服务器目录的程序,而不是使用该目录及其包含的文件 - 如果它们存储在本地。创建一个允许挂载一个目录的程序

服务器将在Linux上运行,但客户端可能是Linux或Windows。虽然我并不介意仅仅使用linux,但只要可以添加功能来支持Windows客户端,而无需重写大量代码。

我该如何去创建类似的东西?在过去的几个星期里,我学到了很多关于套接字的知识,并且我假设它扮演了一个角色,但我还没有找到如何允许安装目录,然后在文件发生某些动作时执行某些动作在该目录中。

作为一个例子,当用户保存一个文件时,除了保存文件之外,服务器还应该能够在另一个目录中创建所述文件的时间戳备份。

我该从哪里开始学习如何做到这一点?

+0

如何使用git? http://git-scm.com/ – sje397 2012-03-05 14:24:59

+1

什么是downvote?我通常所要求的是如何与Linux进行交互,以允许我的服务器端应用程序让客户端装入文件夹并让服务器对其进行操作; X我正在创建一个程序并从中学习。不使用已有的东西。 – natli 2012-03-05 14:35:29

+0

“安装服务器的文件夹”对您意味着什么?什么网络协议(NFS,CIFS,...)?你有什么想法? http://fuse.sourceforge.net/ ?? – 2012-03-05 14:41:52

回答

1

在Linux下,现代桌面环境已经包含了这种功能。使用安装和保险丝,您也可以安装当今大多数可用的网络文件系统。

如果您决定仍然继续并做到这一点,我猜您需要选择什么级别来进行抽象。是否有足够的桌面环境抽象,比如在KDE中创建一个kioslave,这会限制你作为用户的KDE应用程序。或者你应该选择FUSE模块,这可以在文件系统级别上工作,并且可以与所有应用程序一起工作,当然缺乏kioslaves的UI集成。

在Windows下,我认为你唯一的方法是使用虚拟文件系统提供的API,我可以发誓我最近读了这样的东西,但我找不到它。我相信一个探险家整合也可以做,但我不确定。

0

如果我正在编写这样的程序,我会使用Qt libraries,因为我喜欢它们,并且它们在多个平台上运行良好。 C++纯粹主义者经常因为各种原因而不喜欢它们(比如它们的一般'javaish'性质),所以你可能想看看由boost提供的文件系统实用程序。

Qt的QFileSystemWatcher类可以通知您文件和目录的更改。

当然,您需要一个套接字连接并决定来回发送消息时使用的协议。通常使用通用协议(例如JSON或可能是Google's protocol buffers)是很好的,这样可以很容易地开发其他工具。

我在评论中提及git,因为通常情况下,这提供版本功能使用盖子下现有的工具程序 - 这样你的程序可以只让严格和强大的版本功能调用git