gpt4 book ai didi

ios - 无法使用 CocoaAsyncSocket 连接到 IPv6

转载 作者:行者123 更新时间:2023-11-28 06:54:32 38 4
gpt4 key购买 nike

使用 CocoaAsyncSocket library 连接到 iPv6 主机时出现问题

我成功地让 GCDUDPAsyncSocket 工作,但意识到 TCP 更适合我的用例。

不幸的是 - 我永远无法成功连接到已发布和发现的 NSNetService。服务被发现,地址也被发现。发生了没有失败的连接尝试,但连接永远不会安全。

我可以使用“connectWithHost”连接并传入分配给我的 mac 的 IP 地址,但这是我获得该 ip 的唯一方法是通过硬编码。有没有办法通过NSNetService获取这个IP?

我使用的是 swift、Xcode 7.1.1 和 iOS 9.1。我在 iPhone 和运行 Apple TV 模拟器的 Mac 之间进行连接。这适用于 UDP。

无论如何 - 即使提供了适当的地址,连接尝试也会超时!

Socket is Disconnecting - Error Domain=NSPOSIXErrorDomain Code=60 "Operation timed out" UserInfo={NSLocalizedDescription=Operation timed out, NSLocalizedFailureReason=Error in connect() function}

有人遇到过这个吗?这是我的连接代码:

func connectToAddress(sender: NSNetService) {
if let addresses = sender.addresses {
for address in addresses {
print(address)
}

self.serverAddresses = addresses
var done = false

while !done && (self.serverAddresses.count > 0) {
let address = self.serverAddresses[0]
self.socket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
do {
try self.socket.connectToAddress(address)
done = true
} catch {
print("Unable to Connect")
}
}

if !done {
print("Could Not Connect To Address")
}
}

最佳答案

请更新您的 CocoaAsyncSocket 库。该问题已在 5 月 2 日提交时修复。所以这应该与以下设置为 false 的标志一起使用

socket.IPv4PreferredOverIPv6 = NO;

这将允许您的应用/游戏在 IPv4 和 IPv6 中连接。从 6 月 1 日起,Apple 将拒绝不兼容 IPv6 网络的应用程序。您的应用程序应该可以在 IPv6 网络中正常运行。

关于ios - 无法使用 CocoaAsyncSocket 连接到 IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055469/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com