2

有没有办法刷新内部缓冲区/队列/等。CocoaAsyncSocket(GCDasyncSocket)?

我想设置这样的环境,当我调用[... readDataWithTimeout ..]方法时,我不希望它从以前的连接中读取任何剩余的垃圾数据,这些数据可能已被缓冲并位于某处。

或者有时我只是想忽略一个数据流并重新开始,所以想确保一个干净的管道。

4

2 回答 2

0

我还在 CocoaAsyncSocket Google Group 中问过这个问题,Robbie Hanson 很友好地详细说明了他的回答

于 2011-11-19T01:41:07.787 回答
0

确保在写入数据后发送 \n 或 \r。我写了一个套接字管理器类,你可以在这里查看:CocoaAsyncSocketManager

示例代码:

func sendMessage(messageString msg: String) {
    if let _data = msg.data(using: .utf8), let _carriageReturn = "\r".data(using: .utf8) {
        tcpSocket?.write(_data, withTimeout: -1, tag: 0)
        tcpSocket?.write(_carriageReturn, withTimeout: -1, tag: 99)
    }
}
于 2019-02-07T20:59:48.027 回答