700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS客户端开启FTP 其他设备访问手机本地文件操作实现

iOS客户端开启FTP 其他设备访问手机本地文件操作实现

时间:2023-05-22 03:29:30

相关推荐

iOS客户端开启FTP 其他设备访问手机本地文件操作实现

iOS客户端开启FTP,其他设备访问手机本地文件操作实现

因为项目需要,需要在手机端搭建FTP服务,让其他设备来访问手机某个路径文件夹下边的文件,实现下载功能。

主要实现借助第三方库XMFTPServer, 原来文件有修改,实现带用户名、密码访问连接FTP。

首先封装FTPManager,便于其他地方使用

.h 文件部分代码

#import "XMFTPServer.h"@interface FTPManager : NSObject/*** 服务器ftpServer;*/@property (nonatomic, strong) XMFTPServer *ftpServer;/*** 是否有用户连接*/@property (nonatomic, assign) BOOL isLink;/*** 创建ftpServer管理类单例*/+ (instancetype)sharedManager;/*** 主动断开链接*/- (void)disconnect;/*** 开放端口*/- (void)portDispark;@end

.m 文件部分代码

@implementation FTPManager/** */+ (instancetype)sharedManager {static FTPManager *_ftpManager = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_ftpManager = [[FTPManager alloc] init];});return _ftpManager;}/** 主动断开链接 */- (void)disconnect {[self.ftpServer stopFtpServer];self.isLink = NO;}/** 开放端口,监听ftp用户 */- (void)portDispark {//默认开放端口为20000unsigned ftpPort = 20000;NSString *basePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];self.ftpServer = [[XMFTPServer alloc] initWithPort:ftpPort withDir:basePath notifyObject:self];NSLog(@"FTP服务器地址:%@", [NSString stringWithFormat:@"ftp://%@:%u", [ManagerTool getIPAddress],ftpPort]);}/** 监听登录用户 */- (void)currentUserLogin {self.isLink = YES;NSLog(@"有FTP用户登录进来了");}@end

由于开放FTP需要设置账户、密码, 需要在XMFTPServer源文件作出修改。

XMFTPConnection.m中需要做修改, 修改代码如下

-(void)doUser:(id)sender arguments:(NSArray*)arguments{// send out confirmation message -- 331 password required forif ( currentUser != nil )currentUser = [NSString new];currentUser = [arguments objectAtIndex:1];NSString *outputString = [[NSString alloc] init];if([[arguments objectAtIndex:1] isEqualToString:@"用户名"]){outputString = [ NSString stringWithFormat:@"331 Password required for %@", currentUser ];[[NSNotificationCenter defaultCenter] postNotificationName:@"currentUserLogin" object:nil];}else{outputString = @"530 Invalid username\n";}[ sender sendMessage:outputString];}

-(void)doPass:(id)sender arguments:(NSArray*)arguments{NSString *pass = [ arguments objectAtIndex:1 ];NSString *outputString = [[NSString alloc] init];if([pass isEqualToString:@"密码"]){outputString = [ NSString stringWithFormat:@"230 User %@ logged in.", currentUser ];}else{outputString = @"500 Invalid username or password\n";}[ sender sendMessage:outputString];}

基本实现iOS开放设置携带用户名、密码的服务,其他设备可访问移动端本地文件。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。