请问nautilus的网上邻居功能如何实现的?是使用FUSE么?

软件和网站开发以及相关技术探讨
回复
jyoxun
帖子: 21
注册时间: 2009-08-31 14:26

请问nautilus的网上邻居功能如何实现的?是使用FUSE么?

#1

帖子 jyoxun » 2009-09-12 21:41

nautilus网上邻居是如何获取整个网络信息的呢,是使用fusesmb之类,还是用别的来实现呢?
看了下nautilus的代码,感觉没有头绪,象获取整个网络信息和使用SMB命令链接共享机等等这些命令都没找到阿。
jyoxun
帖子: 21
注册时间: 2009-08-31 14:26

Re: 请问nautilus的网上邻居功能如何实现的?是使用FUSE么?

#2

帖子 jyoxun » 2009-09-14 22:04

解决了,是使用gvfs作后端。
gvfs(gnome-vfs的升级版)包括gio和gvfs本身。

以下引用自GNOME :
http://library.gnome.org/misc/release-n ... developers

GVFS 是一个带有诸如 SFTP, FTP, DAV, SMB, ObexFTP 等协议后台的用户空间虚拟文件系统。GVFS 是 GNOME-VFS 的替代品。GNOME-VFS 将不再被赞成使用,开发者也不应在新的应用程序中继续使用。

GVFS 包含两个部分:

* GIO,作为 GLib的一部分的新共享库,提供了 针对 GVFS 的 API;同时
* GVFS 本身,是一个包含多种文件系统和协议(如SFTP, FTP, DAV, SMB 和 ObexFTP)支持的后台软件包。

GVFS/GIO 致力于提供一个现代的,易用的 VFS 系统。它的目标是提供一些列 API 给开发者,以是他们不再使用原始的 POSIX IO 访问。它提供了一个更高级的以文件为中心的接口,而不仅仅是 POSIX IO 的复制品。除了文件的读写支持外,GIO 还提供了文件监视工具,异步 IO,和文件名完成功能。

GVFS 通过运行一个单独的主守护进程 (gvfsd) 来工作,它保证了对当前的 GVFS 挂载的跟踪。每一个挂在都有独立的守护进程。(一些挂载也会同时共享一个进程,但多数情况下不会这样。) 客户端通过一个联合 D-Bus 会话来与这些挂载通信(在会话总线上,但是使用点对点 D-Bus),同时用一个用户协议来进操作文件内容。通过进程进行后台传递大大简化了程序的依赖关系,使整个系统更加健壮。

GVFS 也提供了在 ~/.gvfs/ 提供了一个 FUSE 挂在点,这样可以使得 GVFS 挂载可以被传统的使用标准 POSIX IO 的应用程序使用。

不同于 GNOME-VFS,GVFS 中的连接是有状态的。这意味着用户仅仅需要输入一次密码,而不是每次成功的连接都需要一次次地重复输入。

因为转为使用 GVFS,自动挂载和自动运行现在已经直接由 Nautilus 完成而不再使用 gnome-volume-manager。
Nogard
帖子: 12
注册时间: 2006-02-18 16:09

Re: 请问nautilus的网上邻居功能如何实现的?是使用FUSE么?

#3

帖子 Nogard » 2009-10-06 13:57

晕,又冒了个GVFS出来,看来要学的东西还很多啊...

如何为nautilius添加支持新的协议呢...
回复