连接套接字后,GCDAsyncSocket不会写入

时间:2019-09-05 10:07:48

标签: ios gcdasyncsocket

在我的iOS应用中,我使用GCDAsyncSocket库与另一台iPad上运行的本地服务器进行通信。因此,多个iPad可以在本地相互通信,并且其中一个可以充当服务器。

当客户端连接到服务器iPad时,以下GCDAsyncSocketDelegate会触发:

func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16) {
    sock.readData(toLength: UInt(UInt64.byteWidth), withTimeout: -1, tag: 0)
    delay(0.1, queue: socket.delegateQueue, closure: { [weak self] in
        sock.write(dataToSend, withTimeout: -1, tag: 0)
    })

    connected = true
}

一旦客户端连接到服务器,它将向该套接字(服务器)写入一些数据,但是,这些数据不会到达服务器。但是,如果我将写入调用包装在延迟函数中,则数据将到达其目的地。

这是我的延迟功能:

func delay(_ delay: Double, queue: DispatchQueue?, closure: @escaping () -> ()) {
    let delayTime = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
    let q = queue ?? DispatchQueue.global()
    q.asyncAfter(deadline: delayTime) {
        closure()
    }
}

我在这里想念什么?

0 个答案:

没有答案