有没有办法刷新内部缓冲区/队列/等。CocoaAsyncSocket(GCDasyncSocket)?
我想设置这样的环境,当我调用[... readDataWithTimeout ..]方法时,我不希望它从以前的连接中读取任何剩余的垃圾数据,这些数据可能已被缓冲并位于某处。
或者有时我只是想忽略一个数据流并重新开始,所以想确保一个干净的管道。
有没有办法刷新内部缓冲区/队列/等。CocoaAsyncSocket(GCDasyncSocket)?
我想设置这样的环境,当我调用[... readDataWithTimeout ..]方法时,我不希望它从以前的连接中读取任何剩余的垃圾数据,这些数据可能已被缓冲并位于某处。
或者有时我只是想忽略一个数据流并重新开始,所以想确保一个干净的管道。
我还在 CocoaAsyncSocket Google Group 中问过这个问题,Robbie Hanson 很友好地详细说明了他的回答。
确保在写入数据后发送 \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)
}
}