CocoaAsyncSocket发送UDP但没有响应

时间:2016-10-24 08:41:39

标签: ios swift sockets udp cocoaasyncsocket

信息:我的本地网络上有一台设备,它是一台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))")
    }

感谢您的帮助,这让我感到疯狂,有时它会起作用,但有时候不行,现在它再也无法使用了

0 个答案:

没有答案