如何通过多路连接发送多组数据

时间:2015-08-16 03:09:44

标签: ios swift bluetooth encode multipeer-connectivity

我希望能够使用

appDelegate.mpcHandler.session.sendData 

但是在接收端没有办法获得相同的变量,例如接收任何数据,据我所知你必须写这样的东西

func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) {
    NSLog("%@", "didReceiveData: \(data.length) bytes")
    let str = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
} 

有没有其他人知道多重连接的任何方式来发送和接收多个数据集,因为我希望能够不断地流式传输歌曲持续时间但是在歌曲的开头我需要发送出来这首歌的名字。

1 个答案:

答案 0 :(得分:0)

您可以通过将字典转换为NSData来发送字典,如下所示:

        let data = NSKeyedArchiver.archivedDataWithRootObject(dictionary)

在接收方,它看起来像这样:

override func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) {
    let dictionary = NSKeyedUnarchiver.unarchiveObjectWithData(data) as! Dictionary<String, AnyObject>
    NSLog("Peer \(peerID) has sent message \(dictionary)")
    .....
}

这将允许您发送初始数据。然后你会用

- startStreamWithName:toPeer:error:

开始发送流。这将创建一个连接的字节流(NSOutputStream),您可以使用该字节流将数据发送到指定的对等体。