- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在开发实现多点连接 (MC) 框架的应用程序。当第一次通过 Xcode 在两个不同的手机上运行应用程序时,phoneBob 和 phoneJack,我在 displayName
'BobA' 和 下为 phoneBob 初始化了一个
用于 MCSession
MCSessiondisplayName
'JackA' 下的 phoneJack。 phoneBob 的 MC 发现“JackA”很好,反之亦然,两者可以毫无问题地连接。
但是,删除应用程序并通过 Xcode 重新运行后,我为 displayName
'BobB' 下的 phoneBob 初始化了一个 MCSession
和一个 MCSession
对于 displayName
'JackB' 下的 phoneJack。除了 phoneBob 找到可以成功连接的外部对等点“JackB”之外,它还在日志中找到外部对等点“JackA”,即使“JackA”无法连接到并且与应用程序的先前版本相关联.反之亦然,phoneJack 不仅找到了外部对等点“BobB”,还找到了外部对等点“BobA”。不仅如此,phoneBob 实际上会为应用程序的两个安装找到 ITSELF,“BobA”和“BobB”作为外国同行,而 phoneJack 会发现自己,“JackA”和“JackB”作为外国同行。
我将这些以前安装的应用程序无法连接到“幽灵对等点”的外国对等点称为“幽灵对等点”。我通过 Xcode 卸载并重新运行该应用程序的次数越多,MC 发现的这些 ghost peers 的数量就越大。请注意,这些 ghost peer 仅在应用程序删除后第二次和后续运行时出现。重新启动手机并运行应用程序可以摆脱这些幽灵同行,但我完全不明白为什么 MC 会发现 ITSELF 是外国同行以及实际上并不存在的同行。是否有可能在第二次安装该应用程序时,MC 正在从第一次安装该应用程序时开始一个 ghost session ,该 session 由于某种原因从未终止?我们在第一次安装时初始化的 session 是否有可能在应用程序被删除后仍然存在?
最佳答案
我相信这些幽灵对等点的原因一般是因为 multipeer 是建立在 Bonjour 协议(protocol)之上的,该协议(protocol)通过让客户端向路由器注册自己来工作。当您强行关闭时,没有机会取消注册,这些客户端会一直等待直到超时。
解决这个问题的方法是,第一次创建 MCPeerID 时,您应该序列化并保存它。然后在后续运行中加载并重用同一个对等点,这将防止您将自己视为幽灵,因为当您注册自己时,您现在将替换旧的幽灵版本。
旧的 Apple 开发论坛上有一个线程,其中包含示例代码和 Apple 工程师的回复,确认这是推荐的方法:https://devforums.apple.com/message/1002886#1002886
关于ios - 为什么 Multipeer Connectivity Framework 发现自己既是外国同行又是不存在的外国同行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29220497/
在我的 android 应用程序中,我想在同一行中实现 2 个文本字段。如果文本太长可以转到下一行。所以我使用了更精简的水平布局并添加了 2 个文本字段。 [例如:TextView1、TextV
由于node使用了javascript,它可以充当webrtc peer吗? 然后我可以将它编码为 VP8 流并广播给所有其他对等方吗? 最佳答案 WebRTC 是一个浏览器 API 而不是 Java
我是一名优秀的程序员,十分优秀!