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))")
    }

спасибо за вашу помощь, это сводит меня с ума, иногда это работает, но иногда нет, и теперь это больше не работает

0 ответов

Другие вопросы по тегам