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 {
    //默认开放端口为20000
    unsigned 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 for
    if ( 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开放设置携带用户名、密码的服务,其他设备可访问移动端本地文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值