我有一个模块,我必须通过向 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 委托方法中显示错误
错误域=NSPOSIXErrorDomain 代码=65 “没有到主机的路由” UserInfo={NSLocalizedDescription=没有到主机的路由,NSLocalizedFailureReason=send() 函数中的错误。}
首先为什么我会得到这个错误,有没有其他方法可以实现这个结果。
编辑 :
尝试运行此代码,我正在尝试从连接到同一路由器的设备获取响应。要查找设备 IP,我使用上面的代码。但是套接字有时会关闭,有时它会工作,有时它不会,我无法找到关闭它的解决方案。
谢谢