问题标签 [qlocalsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
195 浏览

qt - 从其他线程关闭阻塞 QLocalServer

QLocalServer在线程中运行阻塞:

如何从另一个线程关闭服务器?或者是使用非阻塞事件的唯一方法?

问候,

0 投票
0 回答
144 浏览

qt - QLocalSocket 问题继续向 QLocalServer 发送数据

我正在尝试将一些数据从 QLocalSocket 循环发送到 QLocalSever。服务器只获取第一个数据而不接收后续数据,但是如果我在客户端的每次调用之间引入 1 mec 延迟,则服务器开始接收所有内容。请查看以下客户端和服务器代码。

客户端.cpp

服务器.cpp

来自 qt doc,据说

readyRead() 不会递归发出;如果您重新进入事件循环或在连接到 readyRead() 信号的插槽内调用 waitForReadyRead(),则不会重新发送该信号(尽管 waitForReadyRead() 仍可能返回 true)。

这是我的问题吗?添加计时器是这里唯一的解决方案吗?

你可以编译这个测试项目-> http://www.filedropper.com/testsocket

0 投票
2 回答
57 浏览

python - C++ 在 Qt 中的行为不同,bind() 返回 EINVAL

我已经检查了bind() return EINVAL,这不是这里的问题。请在对重复感到愤怒之前通读一遍。

我正在尝试连接到wpa_supplicant. 基本上我正在尝试使用 C++ 来实现这一点:

来自https://gist.github.com/artizirk/cd3980c8ff870eb0bfce68bc26a2676b

我已经做了我想做的事,但使用的是普通的 C++。这是代码:

这段代码工作正常。但是当我在 Qt 中执行此操作时,bind()总是返回EINVALie Invalid Arguments。这是代码:

测试此代码的功能虚拟项目位于:https ://github.com/gaurav712/socket_test

我已经检查了所有值数百次,它们都很好,但仍然不起作用。它只是到那个connect()电话。

我想我应该使用特定于 Qt 的东西,我发现了QLocalSocket https://doc.qt.io/qt-5/qlocalsocket.html但是当我导入它时,Qt 无法识别该类。也许是因为我在 Qt 6.x 上,现在它已被弃用(尽管我没有发现任何官方弃用通知)。我该怎么办?我究竟做错了什么?

0 投票
1 回答
52 浏览

qt - qLocalServer 写入阻塞(缓冲区满),如何丢弃数据?

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

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

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