【发布时间】:2021-01-10 02:13:05
【问题描述】:
我现在正在开发一个应用程序,其中(我将把它保留在事物的网络方面)两台设备在打开一部手机后会相互传输数据(很可能是一些 JSON 数据,也可能是图像)在另一个之上。我已经制定了设备检测逻辑,但现在我陷入了启动:两部手机如何知道哪一部首先是客户端,哪一部是服务器,然后切换?我正在使用 Apple 的 Network Framework。
也许两台设备都选择一个随机数,0或1,然后与另一台设备通信结果,0是服务器,1是客户端?如果他们都得到相同的号码重新开始?我在网络方面没有太多经验,所以我真的不确定。
PS:我尝试使用 MultipeerConnectivity 框架,因为它提供了我正在寻找的点对点 functionality,但它没有得到 Apple 的积极支持(这意味着不利于未来的验证)并且不提供我正在寻找的可定制性,这就是我决定使用 Network Framework 的原因,它受到积极支持且易于交互。
【问题讨论】:
-
你为什么说苹果不“积极支持”多点连接?它是操作系统的一部分。它没有被弃用。支持。
-
没错,但它并没有使用最新的设计范例进行更新——我的意思是我已经有一段时间没有在 WWDC 上看到有关 MultipeerConnectivity 的任何内容了。并不是要让它听起来像我说它基本上已被弃用,我的错!但客观上,Apple 比 MutlipeerConnectivity 更支持 Network。我的猜测是他们为 AirDrop 创建了自己的自定义框架分支,向其中添加了新功能,但没有将这些添加到公共框架中。
-
我认为你的意思是网络框架正在更积极地开发,而不是更多的支持。这可能是因为多点框架是在 iOS 7 中出现的,而网络框架是在 iOS 12 中首次出现的;您会期望对较新的框架进行更多增强,因为它们将功能添加到最初受限的框架中。您仍然应该为工作选择正确的框架。多点框架更加抽象,适用于不在同一 IP 网络上的设备。网络框架处于较低级别,需要设备在同一 IP 网络上。
-
您可以使用网络框架,但您需要自己实现更多功能。为了回答您关于谁应该是客户端和谁应该是服务器的基本问题,我建议这两种设备始终都是。角色只需要在事务期间考虑;发送设备(客户端)将发现可用的接收设备(服务器)并在选择目的地时建立连接。然后,您在此会话中转移。
-
@PrayForTech 嗨,你找到答案了吗?我处于相同的情况,我想将 NetworkConnection 用于设备到设备的对等连接。我是网络新手,因此我们将不胜感激
标签: ios swift networking p2p network-framework