如何在swift中实现多播套接字?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在swift中实现多播套接字?相关的知识,希望对你有一定的参考价值。
我正在编写一个服务器,除其他外,需要不断地在不同的多播地址中发送数据。正在发送的包可能由客户端(app)接收,该客户端将在所提到的地址之间切换。
我正在使用Perfect(https://github.com/PerfectlySoft/Perfect)来编写服务器端,但是使用Perfect-Net模块也没有运气,也没有使用CocoaAsyncSocket。我如何使用swift实现发送方和接收方?任何可能的片段都会非常有用。
我一直在阅读关于多播的内容,当涉及到接收器时,我注意到在大多数语言(即java或c#)中,接收器通常指示端口号和多播ip-address,但何时连接到服务器正在制作?套接字何时绑定到真实服务器的ip-address?
提前致谢
如果我们谈论TCP / IP堆栈,只有IP和UDP支持广播和多播。它们都是无连接的,这就是为什么你只看到发送和接收到特殊的多播地址,但没有绑定和连接。您可以在不同语言中看到它,因为(a)协议与语言无关,并且(b)大多数实现都在努力尝试与BSD套接字接口兼容。
如果你想要真正的多播,你需要找到一个允许设置选项的套接字的快速实现。这项行动的通常名称是setsockopt
。多播发送方不需要超出基本UDP套接字(我建议使用UDP,而不是IP),而发送方needs to be added to a multicast group。这个Python example几乎描述了它。
但是,值得注意的是路由器不会路由广播和多播。因此,您无法通过互联网使用它。如果您需要在项目中使用互联网,我建议您使用TCP - 或者如果您的客户端是浏览器的websockets - 并手动将消息发送到它们的“组”。
我猜你真的想要Perfect-Kafka或Perfect-Mosquitto - Message Queue,它允许服务器向客户端订户发布实时流。低级插座不能轻易满足您的要求。
以上是关于如何在swift中实现多播套接字?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS(Swift 或 Objective C)中实现这样的套接字调用?