代码之家  ›  专栏  ›  技术社区  ›  doguico

如何在swift中实现多播套接字?

  •  2
  • doguico  · 技术社区  · 7 年前

    我正在编写一个服务器,除其他外,它需要在不同的多播地址中不断发送数据。正在发送的包可能由客户端(应用程序)接收,客户端将在上述地址之间切换。

    我用的是完美( https://github.com/PerfectlySoft/Perfect )然而,在编写服务器端时,既没有使用Perfect Net模块,也没有使用CocoaAsyncSocket。如何使用swift实现发送方和接收方?任何可能的片段都会非常有用。

    我一直在阅读有关多播的文章,当谈到接收器时,我注意到在大多数语言(如java或c#)中,接收器通常指示端口号和多播ip地址,但什么时候与服务器建立连接?套接字何时绑定到真正的服务器ip地址?

    提前感谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   u354356007    7 年前

    如果我们谈论TCP/IP协议栈,只有IP和UDP支持广播和多播。它们都是无连接的,这就是为什么你只看到发送和接收到特殊的多播地址,而没有绑定和连接。您可以在不同的语言中看到它,因为(a)协议与语言无关,(b)大多数实现都付出了合理的努力,试图与BSD套接字接口兼容。

    如果您想要实现真正的多播,您需要找到一种允许设置选项的套接字的快速实现。此操作的常用名称为 setsockopt . 除了基本的UDP套接字(我建议使用UDP,而不是IP),多播发送方不需要任何东西 needs to be added to a multicast group . 这 Python example 几乎可以描述它。

    然而,值得注意的是,路由器不路由广播和多播。因此,你不能在互联网上使用它。如果您需要在项目中使用internet,我建议您使用TCP(如果您的客户端是浏览器,则使用websockets),并手动向其中的“组”发送消息。

        2
  •  1
  •   PerfectlyRock    7 年前

    我想你实际上想要完美的Kafka或完美的Mosquetto消息队列,它允许服务器向客户端订阅者发布实时流。低电平插座不容易满足您的要求。