【问题标题】:How to implement multicast sockets in swift?如何快速实现多播套接字?
【发布时间】:2018-05-04 10:51:21
【问题描述】:

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

我正在使用 Perfect (https://github.com/PerfectlySoft/Perfect) 编写服务器端,但是没有使用 Perfect-Net 模块或使用 CocoaAsyncSocket。我如何使用 swift 同时实现发送方和接收方?任何可能的 sn-p 都会非常有用。

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

提前致谢

【问题讨论】:

    标签: swift sockets server multicast perfect


    【解决方案1】:

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

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

    但是,值得注意的是,路由器不会路由广播和多播。因此,您不能通过互联网使用它。如果您需要在您的项目中使用互联网,我建议您使用 TCP - 如果您的客户端是浏览器,则使用 websockets - 并手动将消息发送到它们的“组”。

    【讨论】:

      【解决方案2】:

      我猜你实际上想要 Perfect-Kafka 或 Perfect-Mosquitto - Message Queue,它允许服务器向客户端订阅者发布实时流。低级套接字不会轻易满足您的要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-12
        • 1970-01-01
        • 2015-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多