如何使用苹果的网络框架向所有链接本地节点发送 UDP 消息?
Posted
技术标签:
【中文标题】如何使用苹果的网络框架向所有链接本地节点发送 UDP 消息?【英文标题】:How can I send a UDP message to all link local nodes using apple's Network framework? 【发布时间】:2019-07-15 11:32:32 【问题描述】:当我尝试建立连接时,它从等待(POSIXErrorCode: Network is down)变为preparing state。但它永远不会进入ready state,我不知道如何发送数据报。
import Network
import Dispatch
let connection = NWConnection(host: .ipv6(.linkLocalNodes), port: 9898, using: .udp)
connection.stateUpdateHandler = state in print(state)
connection.start(queue: DispatchQueue(label: "UDP"))
如何向所有链路本地节点发送 UDP 消息?
【问题讨论】:
UDP 是专门无连接的。 @RonMaupin :好的,但是我该如何发送消息呢?当我立即发送时使用:connection.send(content: "Hello world, this is me".data(using: .utf8), completion: .idempotent)
永远不会发送数据报。
@RonMaupin 从未发送过或从未发送过?
从未发送过。但无论如何,您如何建议在没有 NWConnection 的情况下发送数据报?
【参考方案1】:
看起来您需要为链路本地多播地址指定一个接口。发送到所有接口不起作用。因此,例如在我的情况下,我必须发送到 .ipv6(IPv6Address("ff02::1%en4")!)
以发送到 en4
上的所有本地节点。
【讨论】:
以上是关于如何使用苹果的网络框架向所有链接本地节点发送 UDP 消息?的主要内容,如果未能解决你的问题,请参考以下文章
使用 boost asio udp 套接字时如何设置本地端点