CocoaAsyncSocket отправил UDP, но не получил ответа
Информация: у меня есть устройство в моей локальной сети, это UDP-сервер, и когда я отправляю ему "привет", я получаю ответ "как дела", но я не знаю IP, поэтому мне нужно отправить "Привет" каждому IP моей локальной сети, чтобы найти устройство.
проблема: когда я посылаю "привет" на IP-адрес моего устройства напрямую, я получаю ответ, но я посылаю "привет" на каждый IP, большую часть времени я не получаю ответ (иногда я получаю ответ)
некоторые из моего кода:
// сначала создаем экземпляр GCDAsyncUdpSocket
udpSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.global())
do{
log.debug("bind port")
try self.udpSocket?.enableReusePort(true)
try self.udpSocket?.bind(toPort: 0)
udpBindedToPort = true
try self.udpSocket?.beginReceiving()
}catch {
log.error("error")
udpBindedToPort = false
self.delegate?.findDeviceTimeout(0)
return
}
// это не работает
Async.background({[weak self] () in
for i in 1...255 {
let targetIP = ip_sub + ".\(i)"
self?.send(Define.scanDeviceMessage, host: targetIP, tag: Define.scanDeviceTag)
}
})
//это работает
Async.background({[weak self] () in
let targetIP = "192.168.0.101"
self?.send(Define.scanDeviceMessage, host: targetIP, tag: Define.scanDeviceTag)
})
// делегат
@objc func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data, withFilterContext filterContext: Any?
) {
print("UDP接收到数据 : \(String(data:data, encoding: String.Encoding.utf8))")
}
спасибо за вашу помощь, это сводит меня с ума, иногда это работает, но иногда нет, и теперь это больше не работает