多点连接 手动连接/管理点

Posted

技术标签:

【中文标题】多点连接 手动连接/管理点【英文标题】:Multipeer Connectivity Connecting / Managing Peers Manually 【发布时间】:2014-12-02 14:35:12 【问题描述】:

我试图弄清楚手动连接到对等点的 NSData 对象是什么。我在苹果文档中找不到它,它只是说它需要来自对等方的连接数据对象,但我找不到从哪里得到它。这是Apple Doc

我想用这个

 func connectPeer(_ peerID: MCPeerID!, withNearbyConnectionData data: NSData!)

当对等方断开连接时,我正在使用此方法。出于某种原因,当对等方断开连接时,我仍然可以从中发送和接收信息,因此我想使用此方法强制重新连接。

感谢您的帮助

【问题讨论】:

有什么理由要这样做,而不是使用更高级别的 MCNearbyServiceBrowserMCNearbyServiceAdvertiser 类? 我能看到的所有强制连接都是使用浏览器重新邀请他们加入会话。尽管我仍然可以发送和接收消息,但我遇到了连接断开的大问题。 您能否发布您当前正在断开连接的代码? MPC 有几个已知问题,您可能只是遇到其中之一。 @ChrisH 这并不是真正的特定代码,我在这种情况下会丢失连接。有时一个设备可能无法找到它周围的所有其他设备。这样,如果我得到了 func connectPeer(_ peerID: MCPeerID!, withNearbyConnectionData data: NSData!) 的数据需要的答案,我可以解决其中的一些问题。 有道理。我添加了一个可能的答案 【参考方案1】:

您正在寻找的NSData 对象是该函数完成块的一部分:

func nearbyConnectionDataForPeer(_ peerID: MCPeerID!,
       withCompletionHandler completionHandler: ((NSData!,
                                      NSError!) -> Void)!)

文档中并不清楚,但我怀疑您自己的发现代码会在初始连接阶段将您本地创建的MCPeerID 对象传递给其他发现的设备。然后你会在上面的函数中使用发现的对等点的MCPeerID对象,最后用你得到的数据调用connectPeer函数。

我很想听听你是否能做到这一点!

【讨论】:

【参考方案2】:

如果您真的想了解传递给对等方以建立连接的数据,我建议您应该阅读以下文档: truth about multipeer connectivity framework

【讨论】:

以上是关于多点连接 手动连接/管理点的主要内容,如果未能解决你的问题,请参考以下文章

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

多点连接突然停止寻找对等点

多点连接 - 以编程方式断开对等点

多点连接 - 如何设置让一台主机向多个点发送数据?

ubuntu手动设置ip地址

MobaXterm SSH手动连接PNET Lab中的设备