问题标签 [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 回答
421 浏览

sockets - 如何清除 QLocalSocket?

我在清除QLocalSocket时遇到问题。

现在我正在通过QLocalServer/QLocalSocket发送和接收图像数据。

但在接收程序中,由于内存中堆积的图像数据,内存大量增加。

所以,我想在读取数据时清理套接字。

但似乎QLocalSocket参考中没有功能。

如何清除套接字?

0 投票
1 回答
203 浏览

memory - QLocalServer/QLocalSocket 内存泄漏

我在使用 QLocalServer/QLocalSocket 时遇到了一些问题。

我正在将原始像素数据从服务器发送到客户端,并且在处理过程中存在巨大的内存泄漏。但我不知道是什么原因...

内存增加约 20MB/1 秒(当我在系统管理员那里检查时。)

以下是我的代码。

服务器

客户

这两个代码可以很好地交流,但记忆会急剧增加,当超过一定水平时就会终止。

我试过像connection->reset() 或 QByteArray::clear()..etc但它不起作用。

我的问题有什么想法吗?

使用QTcpServer/QTcpSocket怎么样?这可以解决我的问题??

请分享你的想法。谢谢!!

0 投票
1 回答
585 浏览

c++ - 应该如何读取 QLocalSocket/QDataStream 以避免死锁?

QLocalSocket/QDataStream应该怎么读?

我有一个程序通过命名管道使用QLocalSocketand与另一个程序通信QDataStream。下面的recieveMessage()插槽连接到QLocalSocket'sreadyRead()信号。

我发现应用程序有时会挂起readRawData()。也就是说,它成功读取了 4 字节的标头,但之后再也没有从readRawData().

如果我添加...

...到此功能的开始,应用程序运行良好(带有简短的测试消息)。

我当时猜测(文档非常稀少)发生了某种死锁,我必须使用bytesAvailable()信号来逐渐建立缓冲区而不是阻塞。

为什么是这样?从 QLocalSocket 读取的正确方法是什么?

0 投票
1 回答
455 浏览

qt - QLocalSocket - QTimer 和 Lambda

我在 Qt 5.7.1 上对 Lambda 和计时器有一个奇怪的行为。可能是我的一个错误。

我开始与套接字建立连接并设置一个计时器以在一定时间后检查它是否已连接。

套接字连接的信号将停止计时。

但是,通过以下实现,即使调用了 connected 信号,定时器也不会停止。

这是在 Qt5.7.1 和 Windows 10 上可重现的问题的最小示例。

程序的输出:

我还注意到它并不总是可重现的,而且似乎是随机的。

0 投票
0 回答
144 浏览

c++ - 为什么 QLocalSocket 设计为仅连接到“Windows”中的本地管道?

所以在 QT5.7.0 源代码qlocalsocket_win.cpp中有几行:

所以没有机会连接到另一台 PC 上的管道。我更改了几行,重新编译 Qt5Network.dll 并且一切正常。是否有任何理由仅将 QLocalSocket 绑定到本地管道?

0 投票
0 回答
17 浏览

c++ - 对 QLocalSocket::QLocalSocket(QObject*) 的未定义引用

我正在尝试在 QT 中使用 QLocalSocket,但出现错误Undefined Reference to QLocalSocket::QLocalSocket(QObject*)

这是 .cpp 的开头:

和 .h 的开头

我在 linux 上使用 QT 5.8。

0 投票
0 回答
610 浏览

c++ - QLocalSocket 断开连接后我应该收到所有消息吗?

我在 Windows、Linux 和 MacOSX 中有一个 c++/Qt 应用程序,并且我有一个使用 Qt Local Server/Socket 的本地客户端-服务器机制。

当服务器拒绝连接时,我使用QLocalSocket::disconnectFromServer()发送消息并关闭套接字

从我看到的文档中

如果有等待写入的未决数据,QLocalSocket 将进入 ClosingState 并等待直到所有数据都已写入。

所以在客户端,我连接信号QLocalSocket::disconnected并在我的插槽中执行以下操作

但有时,主要是在慢速 Linux 机器上(我尝试使用只有 1 个处理器的虚拟机),有时我没有收到服务器在关闭前发送的最后一条消息。

为什么会发生这种情况?它应该与文档形成对比,不是吗?

为什么我只在 Linux 和 MacOSX(Qt 使用 unix 域套接字)中注意到它而我在 Windows(Qt 使用管道)中没有注意到它,是否有一些动机?

也许有一些与域套接字相关的动机?或者我只是误解了什么?

编辑:正如在下面的评论中所写,在这些情况下,当我没有收到消息时,也QLocalSocket::ClosingState丢失了,我直接收到QLocalSocket::UnconnectedState

编辑2:正如评论中所建议的,我尝试了这个waitForReadyRead()功能。我做到了onSocketDisconnected()onStateChanged()当状态变为QLocalSocket::ClosingStateor时也是如此QLocalSocket::UnconnectedState。当我收到QLocalSocket::ClosingState一切顺利时,但正如我在上次编辑中所说的那样,问题是有时QLocalSocket::ClosingState会丢失。在这种情况下,waitForReadyRead()没有等待超时就失败了,并且我有一个警告“QIODevice:read (QTcpSocket): device not open”(即使我正在使用QLocalSocket,也可能警告消息在 Qt 源中没有很好地更新)。顺便说一句,我使用的是 Qt5.7。

0 投票
1 回答
951 浏览

qt - 在关闭之前将数据作为客户端发送到 QLocalServer 的问题

我正在学习 Qt,并且在关闭客户端应用程序之前向 QLocalServer 发送一些数据时遇到了一些麻烦。在示例中,我尝试发送“再见”两次。但在服务器端,我只收到过一次。无论客户端在关闭前发送多少次,服务器都会收到唯一的第一条消息。如果我使用 QCloseEvent,则结果是相同的。也许我做错了什么?谢谢你的帮助!

简化服务器示例

那是客户的例子

0 投票
1 回答
372 浏览

qt - QLocalSocket:套接字访问错误(错误3)

最近在我的 FreeBSD 系统上完成了 qt5 和 qutebrowser 的编译。当我以 root 身份运行时,Qutebrowser 运行良好,但否则会给我这个套接字访问错误。以前从未使用或使用过 qt5。我假设这是一个权限问题,并且发现了一个 stackoverflow 问题和关于如何在 Windows 中解决此问题的响应。已经了解 setSocketOption 但不知道如何执行此操作,也不知道这是否可以解决我的问题。谢谢!

给出的确切错误:

连接到正在运行的实例时出错:

QLocalSocket::connectToServer: 套接字访问错误(错误 3)

也许另一个实例正在运行但被冻结?

0 投票
1 回答
149 浏览

qt - 将异步 QLocalServer 与 QEventLoop 一起使用

我想QLocalServer在应用程序中使用不使用QCoreApplication. 据我了解,这应该使用QEventLoop

同步版本按预期工作。有没有办法使用异步方式QLocalServer

编辑:这是一个基本的版本:

问候,