信息:我的本地网络上有一台设备,它是一台UDP服务器,当我向它发送“你好”时,我会得到一个“你好吗”的响应,但我不知道IP,所以我必须向本地网络的每个IP发送“hello”才能找到该设备。
问题:当我直接向我的设备发送“hello”时,我得到了响应,但我向每个IP发送“hello”,大部分时间都没有响应(有时我得到回复)< / p>
我的一些代码:
//首先创建一个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))")
}
感谢您的帮助,这让我感到疯狂,有时它会起作用,但有时候不行,现在它再也无法使用了