【问题标题】:UDP Connection failed - Error "No route to host" since the new iOS Update 14.5.1UDP 连接失败 - 自新 iOS 更新 14.5.1 以来出现错误“No route to host”
【发布时间】:2021-05-20 17:06:09
【问题描述】:

我有一个应用程序,通常所有设备都显示在起始页上,这些设备连接到特定的 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")
        }
    }        
}

感谢任何帮助。

【问题讨论】:

    标签: swift udp


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 2020-03-23
      • 2019-12-04
      • 2015-06-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多