iOS 是不是支持通过 SMB 进行文件操作?
Posted
技术标签:
【中文标题】iOS 是不是支持通过 SMB 进行文件操作?【英文标题】:Does iOS support file operations via SMB?iOS 是否支持通过 SMB 进行文件操作? 【发布时间】:2011-04-09 07:34:22 【问题描述】:ios(或 iPhone OS)是否支持通过 SMB 网络共享进行文件操作? 如果是这样,是否有任何文件说明如何执行此操作?
【问题讨论】:
【参考方案1】:我以为我让它在 macbook 和我的 iPhone 模拟器之间工作,但是它从来没有对 Windows 机器上共享的文件夹工作。 /p>
【讨论】:
你根本没有让它工作。正如对链接问题的回答所述,NSNetService
与基于 Bonjour 的服务发现有关。它与通过 SMB 协议进行实际通信无关。
你是对的。我在收到链接问题的答案之前发布了这个。大多数混淆是由于缺少关于“类型”参数在以下代码行中的作用的文档self.netService = [[[NSNetService alloc] initWithDomain:@"10.212.19.121" type:@"_smb._tcp." name:@"lanmanserver"] autorelease]
【参考方案2】:
尚未测试,但这可能会有所帮助:http://38leinad.wordpress.com/2011/03/23/windows-filesharing-library-for-ios/
【讨论】:
【参考方案3】:不确定 SMB,但我能够使用 SFTP 在越狱的 iPad 上读取/写入文件。操作系统版本 4.1、4.2、4.3。
附带说明一下,我认为这个问题需要澄清一下——您到底想做什么,以及您使用的是普通设备还是越狱设备。知道这些事情的人可能会有很大的不同。
【讨论】:
【参考方案4】:你也可以参考我的经验,我成功实现了一个 iOS 的 SMB 客户端:SMB/samba support on iOS?
【讨论】:
【参考方案5】:我使用 samba 包中的 libsmbclient 在 iOS 上进行 SMB 操作。 您可以查看我的项目https://github.com/kolyvan/kxsmb(libsmbclient 上的objective-c 包装器)。目前它支持一组有限的 SMB 操作。它主要用于浏览本地网络和从 SMB 共享中检索文件。
【讨论】:
libsmbclient
是 GPL,这意味着任何使用它的 iOS 应用程序也必须是 GPL。【参考方案6】:
iOS 没有任何 API 可用于 SMB。但是,SMB 目前已由 Microsoft 记录,并且实施它并非不可能(尽管也不容易)。我创建了一个免费软件项目,其中包含处理 SMB 所需的大部分内容。见
https://sourceforge.net/projects/smb4ios/
它不使用 Samba 或任何其他重量级库。主要适用于打印机,但有了已有的,很容易添加对文件处理或其他内容的支持。
我不关心 GPL 的东西,你可以重用代码而不用担心。只需检查我使用的 NTLM 库是否为您提供正确的许可证(或实现您自己的 NTLM)。
【讨论】:
只实现现在过时的 samba v1(例如与 windows xp 兼容) 正确。我的任务需要支持 XP,因为 ATM 上还有很多 XP 机器存在。否则我会选择 SMB 2,这是一种更好的格式。 我在 macOS sierra 上试过这个(针对 iOS 10 设备)。我尝试连接到 localhost SMB 共享,但由于 ntstatus NOT_SUPPORTED 失败,可能是因为这是 v1 客户端,而 sierra SMB 可能是 v2。我尝试连接到极端机场(我的应用程序的点)上的共享,但由于 ntstatus NOT_IMPLEMENTED 失败,表明机场极端不支持某些东西。不管怎样,运气不好。不过,在 smb4ios 项目上做得很好,有这样的 OSS 代码很酷。 注意:这取决于 libntlm,并且只捆绑了 32 位版本。这些天,事情需要是 64 位的。我从这里nongnu.org/libntlm 替换了它(在源代码级别,而不是链接库)Libntlm,它看起来不错,但是将它换掉是一项相当大的工作以上是关于iOS 是不是支持通过 SMB 进行文件操作?的主要内容,如果未能解决你的问题,请参考以下文章
让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题