首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qLocalServer写阻塞(全缓冲区),如何丢弃数据?

qLocalServer写阻塞(全缓冲区),如何丢弃数据?
EN

Stack Overflow用户
提问于 2022-01-19 16:33:03
回答 1查看 92关注 0票数 0

我试图了解本地套接字(Unix域套接字)是如何工作的,特别是如何在QT中使用它们。据我理解,Unix域套接字始终是可靠,没有丢失任何数据。查看这些示例,这些步骤(使其变得简单),考虑服务器(生产者)和客户端(消费者)。

  1. 一个qLocalServer (在服务器上)创建一个套接字,将它绑定到一个已知的位置,并侦听传入的连接。
  2. (在客户机上)连接到已知位置的qLocalSocket。在服务器上接受连接。
  3. 服务器可以使用write方法(qLocalServer->nextPendingConnection()返回的qLocalSocket实例)将数据发送到套接字。

当套接字缓冲区已满时,一旦客户端从套接字读取并释放套接字缓冲区,服务器的任何写入都会被阻塞。这是我不明白的部分:假设套接字缓冲区已满,服务器一直在写。这些数据存储在哪里,如何控制保存这些数据的数据结构?有办法丢弃这些数据吗?假设一个产生数据20次/秒的服务器和一个消耗1次/秒的客户端,我想删除所有数据(比我用例中的所有数据更好)。

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 20:05:28

Qt套接字类没有什么独特之处(出于这个问题的目的)。

当套接字缓冲区已满时,一旦客户端从套接字读取并释放套接字缓冲区,服务器的任何写入都会被阻塞。

否-写入将被阻塞,直到客户端执行读取,释放一些缓冲区。(也许这就是你的意思,我们只是有一个小的语言障碍。)

一旦服务器写入套接字,数据就不能“非写”,因此如何最好地处理这一点取决于您的应用程序,以及您是否对服务器或客户端的编程有更多的控制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70774330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档