多点连接:同时向所有点共享文件

Posted

技术标签:

【中文标题】多点连接:同时向所有点共享文件【英文标题】:Multipeer Connectivity : Share Files to all peers simultaneously 【发布时间】:2014-11-28 08:17:17 【问题描述】:

我正在研究一个主题多点连接框架。通过以下链接,我对这个框架有了一个很好的了解:

http://www.appcoda.com/intro-multipeer-connectivity-framework-ios-programming/

但我的问题是,我可以向所有连接的对等方发送聊天消息并被他们接收。但我在文件共享中需要相同的功能。我需要同时向所有连接的对等方发送文件。这可能吗????

【问题讨论】:

【参考方案1】:

是的,这是可能的。如果你想发送大文件(比如几十兆或更多),我建议使用方法sendResourceAtURL:withName:toPeer:withCompletionHandler`` instead ofsendData:toPeers:withMode:error:`。

这样您就不必一次将整个文件加载到内存中(这可能会触发内存警告甚至崩溃)。您还可以得到一个 NSProgress 作为返回值,因此您可以向用户显示传输的进度。

NSURL* fileUrl = [NSURL fileURLWithPath:...];   //get the path of the file you'd like to send
    NSString* resourceName = @"<name to display>";
    for(MCPeerID *peer in session.connectedPeers) 
        [session sendResourceAtURL:fileUrl withName:resourceName toPeer:peer withCompletionHandler:^(NSError *error) 
            //handle transfer completion or error
        ];
    

【讨论】:

好主意。我一定会尝试它,如果它有效,我一定会接受答案。 是否支持断网后暂停和恢复下载?【参考方案2】:

只要您可以将文件转换为 NSData 对象,这似乎是可能的。

理论上如果你改变这一行:

NSData *dataToSend = [_txtMessage.text dataUsingEncoding:NSUTF8StringEncoding];

到:

NSData *dataToSend = [NSData dataWithContentsOfFile:@"Path to the file."];

并保持其余部分相同,它仍然可以工作。

【讨论】:

以上是关于多点连接:同时向所有点共享文件的主要内容,如果未能解决你的问题,请参考以下文章

samba 文件共享

蓝牙共享的音频文件只读

向局域网共享文件夹 写文件(示例)

如何找到共享的文件夹

1. 项目介绍

隐藏共享点中的可见文件