我试图了解本地套接字(Unix域套接字)是如何工作的,特别是如何在QT中使用它们。据我理解,Unix域套接字始终是可靠,没有丢失任何数据。查看这些示例,这些步骤(使其变得简单),考虑服务器(生产者)和客户端(消费者)。
write方法(qLocalServer->nextPendingConnection()返回的qLocalSocket实例)将数据发送到套接字。当套接字缓冲区已满时,一旦客户端从套接字读取并释放套接字缓冲区,服务器的任何写入都会被阻塞。这是我不明白的部分:假设套接字缓冲区已满,服务器一直在写。这些数据存储在哪里,如何控制保存这些数据的数据结构?有办法丢弃这些数据吗?假设一个产生数据20次/秒的服务器和一个消耗1次/秒的客户端,我想删除所有数据(比我用例中的所有数据更好)。
发布于 2022-01-19 20:05:28
Qt套接字类没有什么独特之处(出于这个问题的目的)。
当套接字缓冲区已满时,一旦客户端从套接字读取并释放套接字缓冲区,服务器的任何写入都会被阻塞。
否-写入将被阻塞,直到客户端执行读取,释放一些缓冲区。(也许这就是你的意思,我们只是有一个小的语言障碍。)
一旦服务器写入套接字,数据就不能“非写”,因此如何最好地处理这一点取决于您的应用程序,以及您是否对服务器或客户端的编程有更多的控制。
https://stackoverflow.com/questions/70774330
复制相似问题