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

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

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

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

【问题讨论】:

    标签: ios file session multipeer-connectivity


    【解决方案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."];
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多