TOSMBClient
是一个小型库,作为 iOS 应用的简单 SMB (服务器消息块 ) 客户端。这个库允许连接到 SMB 设备,下载文件元数据,并且允许从 SMB 设备异步下载文件到 iOS 设备。
它是围绕 Defective SMb 或 libDSM,一个由 VideoLabs 开发者构建的用 C 语言编写的低级 SMB 客户端库的 Objective-C 包装器。已专门为 iOS 设备体系结构交叉编译了 libDSM 的副本,并嵌入到此库中,因此此项目没有外部依赖。
#import "TOSMBClient.h"
TOSMBSession *session = [[TOSMBSession alloc] initWithHostName:@"Tims-NAS" ipAddress:@"192.168.1.3"];
[session setLoginCredentialsWithUserName:@"wagstaff" password:@"swordfish"];
理想情况下,在创建一个新的会话对象时最好同时提供主机名和 IP 地址。但是,如果您最初只知道其中的一个值,TOSMBSession
将通过 NetBIOS 进行查找,以尝试解析其他值。
// 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
,这些对象提供了每个文件条目的元数据。
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许可提供。