发送大文件/图像时,多人会话断开连接
Posted
技术标签:
【中文标题】发送大文件/图像时,多人会话断开连接【英文标题】:Multipeer Session Disconnects While sending large files/images 【发布时间】:2015-02-11 05:35:03 【问题描述】:我在我的应用程序中使用了多点连接功能。我有一个奇怪的问题,即我能够发送和接收消息(聊天)。但在文件共享的情况下,我使用
sendResourceAtURL:resourceURL withName:fileName toPeer:peer1
但是在发送大文件(即超过 1Mb)时,应用程序崩溃,即当我使用图像选择器控制器共享从照片应用程序获取的文件时。此外,多点连接不支持断点,我无法调试它。有什么可能的解决方案吗?是内存问题(由于内存使用率高而导致崩溃?)我正在使用 ios 8.1.3(设备)和 ios 8 模拟器。我还检查了两个设备的黑白,但仍然相同的崩溃。请帮助!!!
【问题讨论】:
哪个应用程序崩溃了?一个发送还是一个接收?请张贴代码。没有看到你在做什么就不可能提供帮助。 您好,我遇到了同样的问题,您有没有找到改进/纠正这个问题的方法?谢谢 【参考方案1】:通过多点连接发送数据或文件仅适用于少量数据 - 几千字节是可以的,但发送超过大约 1 兆字节会导致失败。如果您需要发送更多内容,则需要使用流。要建立输出流,请在会话建立时启动它
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state
switch(state)
// ...
case MCSessionStateConnected:
self.outputStream = [session startStreamWithName:@"Stream" toPeer:weakSelf.remotePeerID error:&error];
break;
// ...
对于你的输入流,实现
-(void)session:(MCSession *)session didReceiveStream:(NSInputStream *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID
self.inputStream = stream;
一旦你拥有两个流,你就可以打开它们并开始阅读和写作。
【讨论】:
以上是关于发送大文件/图像时,多人会话断开连接的主要内容,如果未能解决你的问题,请参考以下文章