UDP 连接失败 - 自新 iOS 更新 14.5.1 以来出现错误 "No route to host"

UDP Connection failed - Error "No route to host" since the new iOS Update 14.5.1

我有一个应用程序,通常所有设备都显示在开始页面上,这些设备连接到特定的 Wifi(接入点)。由于新的 iOS 更新,没有显示任何设备,并且在日志中显示“没有到主机的路由”。如果找到与此问题类似的问题但没有找到答案。

(此代码来自之前的开发人员,我对 iOS/swift 编码还很陌生,所以很抱歉...)

尝试发送广播时出现错误...请参阅下面的代码。

open func sendBroadcast(_ data: Data) throws {
    if responseSource == nil {
        try createSocket()
    }
    
    guard let source = responseSource else { return }
    let UDPSocket = Int32(source.handle)
    let socketLength = socklen_t(address.sin_len)
    try data.withUnsafeBytes { (broadcastMessage) in
        let broadcastMessageLength = data.count
        let sent = withUnsafeMutablePointer(to: &address) { pointer -> Int in
            let memory = UnsafeRawPointer(pointer).bindMemory(to: sockaddr.self, capacity: 1)
            return sendto(UDPSocket, broadcastMessage.baseAddress, broadcastMessageLength, 0, memory, socketLength)

        }

        guard sent > 0 else {
            if let errorString = String(validatingUTF8: strerror(errno)) {
                debugPrint("UDP connection failed to send data: \(errorString)")
            }
            closeConnection()
            throw ConnectionError.sendingMessageFailed(code: errno)
        }
        
        if sent == broadcastMessageLength {
            // Success
            debugPrint("UDP connection sent \(broadcastMessageLength) bytes")
        }
    }        
}

感谢任何帮助。

我发现您必须向 Apple 申请多播网络授权: https://developer.apple.com/contact/request/networking-multicast

从 iOS 14.5 开始,您必须请求使用 UDP...

如果他们允许您使用它,只需按照此处说明的这些步骤操作即可: https://developer.apple.com/forums/thread/663271

他们通常会在 1-2 天后回复。