簡體   English   中英

iOS - 多播網絡失敗:“無法分配請求的地址”

[英]iOS - Multicast networking failed : "Can't assign requested address"

我仔細遵循了Apple 的說明

    guard let multicast = try? NWMulticastGroup(for:[ .hostPort(host: "224.0.0.251", port: 5353) ]) else { NSLog("ERROR"); return }
    
    let group = NWConnectionGroup(with: multicast, using: .udp)
    group.setReceiveHandler(maximumMessageSize: 16384, rejectOversizedMessages: true) { (message, content, isComplete) in
        NSLog("Received message from \(String(describing: message.remoteEndpoint))")
    }
    group.start(queue: .main)

但是,當我運行此代碼時,出現以下錯誤:

[49:無法分配請求的地址]

平台是iOS 14.2,如果我在真實設備上或通過模擬器運行程序,問題仍然存在。

我有 com.apple.developer.networking.multicast 權限,並且配置正確。

我嘗試了各種 IP 地址(IPV4 和 IPV6)和各種端口,但沒有任何結果。

我已經就與您完全相同的問題聯系了 Apple DTS(開發人員技術支持)。

在與技術人員進行調查后,我們得出結論,即使我們與其他兩個錯誤消息一起收到此錯誤消息,多播仍然有效。 更具體地說,這些是我們都得到的三個確切錯誤:

MulticastTest[49964:2029188] [] nw_listener_socket_inbox_create_socket setsockopt SO_NECP_LISTENUUID failed [2: No such file or directory]
MulticastTest[49964:2029188] [] nw_listener_socket_inbox_create_socket IP_DROP_MEMBERSHIP 224.0.0.1:28650 failed [49: Can't assign requested address]
     [NWConnectionGroup][state] group entered state waiting(POSIXErrorCode: Network is down)

對我來說,我的原始項目不工作的原因是因為.entitlement文件從未包含在 XCode 的構建設置中,即使其他所有內容.entitlement正確配置。 在此處找到的有關如何正確設置多播權利的說明中從未提到過這一點: https : //developer.apple.com/forums/thread/663271

你可以在這里找到我的和技術人員的工作 udp 多播項目: https : //github.com/richardwei6/Swift-Native-UDP-Multicast-Testing

這確實回答了您的問題,但可能無法完全解決您的問題。 不過,值得一看。

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM