多点连接:同时向所有点共享文件
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 of
sendData: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."];
并保持其余部分相同,它仍然可以工作。
【讨论】:
以上是关于多点连接:同时向所有点共享文件的主要内容,如果未能解决你的问题,请参考以下文章