gpt4 book ai didi

swift - GCDAsyncUdpSocket 套接字在发送 255 个数据包之间关闭

转载 作者:行者123 更新时间:2023-11-30 10:57:48 25 4
gpt4 key购买 nike

我有一个模块,我必须通过向 255 个 IP 地址发送数据包来发现它。例如。连接的 IP:192.188.2.1 然后我必须发送一个数据包来更改最后一个值,即

var HOST = "192.188.2.1"
var arr = HOST.components(separatedBy: ".")
for i in 1 ..< 254
{
dispatchGroup.enter()
time += 0.005
DispatchQueue.main.asyncAfter(deadline: .now() + time) {
let obj = LPScanPacket()
arr[3] = "\(i)"
let str = arr.joined(separator: ".")
SenderWrapper.sendLPPacket(lpPacket: obj, HOST: str)
dispatchGroup.leave()
}
}
dispatchGroup.notify(queue: .main) {
print("Completed sending 👍")
}

但是在发送这么多数据包时,它显示了 udpSocketDidClose 委托(delegate)方法中的错误

Error Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo={NSLocalizedDescription=No route to host, NSLocalizedFailureReason=Error in send() function.}

首先,为什么我会收到此错误,是否有任何替代方法可以实现此结果。

编辑:

尝试运行此代码,我正在尝试从连接到同一路由器的设备获取响应。为了查找设备 IP,我使用上面的代码。但是套接字有时会工作,有时则不会关闭,我无法找到关闭原因的解决方案。

谢谢

最佳答案

广播消息发送到网络或子网上的所有主机,并通过将 IP 地址的节点部分设置为全 1 来创建。

您收到的错误消息与广播消息不经过路由器这一事实有关。

为了能够广播数据报,底层套接字必须处于广播模式。在终端中运行 man setsockopt 以供进一步引用。

关于swift - GCDAsyncUdpSocket 套接字在发送 255 个数据包之间关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743366/

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