TOSMBClient 1.0.8

TOSMBClient 1.0.8

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年9月

Tim Oliver维护。



  • Tim Oliver

TOSMBClient 是一个小型库,作为 iOS 应用的简单 SMB (服务器消息块 ) 客户端。这个库允许连接到 SMB 设备,下载文件元数据,并且允许从 SMB 设备异步下载文件到 iOS 设备。

它是围绕 Defective SMb 或 libDSM,一个由 VideoLabs 开发者构建的用 C 语言编写的低级 SMB 客户端库的 Objective-C 包装器。已专门为 iOS 设备体系结构交叉编译了 libDSM 的副本,并嵌入到此库中,因此此项目没有外部依赖。

功能

  • 通过局域网连接到(大多数)SMB 设备。
  • 同时从 SMB 设备下载文件到您的 iOS 设备。
  • 允许基本的用户身份验证,在可能的情况下自动降级到“来宾”。
  • 用于访问设备上文件元数据的简单、异步 API。
  • 使用 iOS 多任务确保即使在应用程序挂起的情况下下载也会继续。

示例

创建一个新的会话

#import "TOSMBClient.h"

TOSMBSession *session = [[TOSMBSession alloc] initWithHostName:@"Tims-NAS" ipAddress:@"192.168.1.3"];
[session setLoginCredentialsWithUserName:@"wagstaff" password:@"swordfish"];

理想情况下,在创建一个新的会话对象时最好同时提供主机名和 IP 地址。但是,如果您最初只知道其中的一个值,TOSMBSession 将通过 NetBIOS 进行查找,以尝试解析其他值。

请求从 SMB 设备获取文件列表

// Asynchronous Request
[session requestContentsOfDirectoryAtFilePath:@"/"
    success:^(NSArray *files){ 
      NSLog(@"SMB Client Files: %@", error.localizedDescription);
    }
    error:^(NSError *error) {
        NSLog(@"SMB Client Error: %@", error.localizedDescription);
    }];
    
// Synchronous Request
NSArray *files = [session requestContentsOfDirectoryAtFilePath:@"/" error:nil];

所有请求方法都有同步和异步实现。两个都返回一个 TOSMBSessionFile 对象的 NSArray,这些对象提供了每个文件条目的元数据。

从 SMB 设备下载文件

TOSMBSessionDownloadTask *downloadTask = [session downloadTaskForFileAtPath:@"/Comics/Issue-1.cbz"
      destinationPath:nil //Default is 'Documents' directory
      progressHandler:^(uint64_t totalBytesWritten, uint64_t totalBytesExpected) { NSLog(@"%f", (CGFloat)totalBytesWritten / (CGFloat) totalBytesExpected);
      completionHandler:^(NSString *filePath) { NSLog(@"File was downloaded to %@!", filePath); }
      failHandler:^(NSError *error) { NSLog(@"Error: %@", error.localizedDescription); }];

[downloadTask resume];

下载任务的处理类似于 NSURLSession 中的类似操作。它们可以在任何时候暂停或取消(然而,两者都会重置连接以确保没有挂起),并且它们还实现了 UIApplication 背景系统,以确保即使用户点击主页按钮下载也可以继续。

技术要求

iOS 7.0 或更高版本。

许可证

根据您用于 libDSM 的许可证,TOSMBClient 可用多个许可证。

对于libDSM的LGPL v2.1许可版,TOSMBClient同样也按此许可提供。对于Defective SMb的商业许可版,TOSMBClient则按MIT许可提供。