我希望用C ++创建一个程序,允许客户端实际上安装服务器的目录,而不是使用该目录及其包含的文件 - 如果它们存储在本地。
服务器将在linux上运行,但客户端可以是linux或windows。虽然我不介意只开始使用linux,只要可以添加功能来支持Windows客户端,而无需重写很多代码。
我如何创造这样的东西?我在过去几周里已经学到了很多关于套接字的知识,我假设它起了作用,但我还没有找到如何允许挂载目录,然后在文件出现问题时执行某些操作在那个目录中。
例如,当用户保存文件时,除了保存文件外,服务器还应该能够在另一个目录中创建所述文件的带时间戳的备份。
我从哪里开始学习如何做到这一点?
答案 0 :(得分:1)
在Linux下,现代桌面环境已经包含了这种功能。使用安装和保险丝,您还可以安装目前可用的大多数网络文件系统。
如果你决定继续这样做,我想你需要选择什么级别来进行抽象。是否足以让桌面环境抽象,比如在KDE中制作一个kioslave,这会限制你作为用户使用KDE应用程序。或者你应该选择FUSE模块,它可以在文件系统级别上工作,并且可以与所有应用程序一起使用,当然缺少了kioslaves的UI集成。
在Windows下我认为你唯一的方法是使用提供的虚拟文件系统api,我可以发誓我最近读过这样的事情,但我找不到它。我相信探险家的整合也可以,但我不确定。
答案 1 :(得分:0)
如果我正在编写这样的程序,我会使用Qt libraries因为我喜欢它们并且它们在多个平台上运行良好。 C ++纯粹主义者经常因为各种原因(例如他们一般的'javaish'性质)而不喜欢它们,所以你可能想要查看boost提供的文件系统实用程序。
来自Qt的QFileSystemWatcher类可以通知您文件和目录的更改。
当然,您需要一个套接字连接,并决定在来回发送消息时使用的协议。通常最好使用通用协议(例如JSON或Google's protocol buffers),以便可以轻松开发其他工具。
我在评论中提到了git,因为通常情况下,提供版本控制功能的程序会使用现有工具 - 因此您的程序可以调用git
来获得强大而强大的版本控制功能。 / p>