0

我正在使用这个 C# Client for NFS 的源代码:

https://github.com/DeCoRawr/NFSClient

一切正常,但我似乎无法成功调用函数。列出文件夹项目的函数有两个:READDIR 和 READDIRPLUS 基本上,READDIR 只返回路径,READDIRPLUS 返回所有其他属性。

http://pubs.opengroup.org/onlinepubs/9629799/NFSPROC3_READDIRPLUS.htm

调用 READDIRPLUS 时,有两个额外的参数我无法理解如何使用:

dircount 要返回的目录信息的最大字节数。此数字不包括结果的属性和文件句柄部分的大小。

maxcount READDIRPLUS3resok 结构的最大大小,以字节为单位。该大小必须包括所有 XDR 开销。服务器可能返回少于 maxcount 个字节的数据。无论我尝试什么,我似乎都无法做到正确。

有没有人成功调用过这个函数?

4

2 回答 2

1

READDIRPLUS 在 nfsv3 以后的版本中非常常见。dircount 和 maxcount 是作为优化引入的,可以清楚地告诉服务器客户端真正想要什么。表示它在每个回复中需要多少条目,以及客户端在回复到来时为每个条目的属性分配了多少内存。如果客户端想要读取完整的目录条目,它必须循​​环发送 readdirplus 请求,直到回复显示 eof=1(文件结束)。因此客户端可以决定 dircount 和 maxcount 的值。客户通常使用 8k 作为 dircount 和 32k 作为 maxcount。但它是实现定义的。

于 2016-01-25T17:42:19.263 回答
0

我最终修复了开源库:

https://github.com/DeCoRawr/NFSClient/tree/master-READDIRPLUS_for_V3?files=1

有一个单独的分支使用 ReadirPlus for NFS v3。如果有人需要,很容易将 NFS 库与 GUI 客户端分开。

于 2016-01-26T18:46:19.207 回答