QLocalServer 不会启动传入连接
QLocalServer won't start an incoming connection
我正在Qt中创建一个简单的QSocketServer .套接字开始侦听,但传入连接方法似乎从未运行。有人能解释一下这里出了什么问题吗?
主:m_pipeserver = new PipeServer(this);
if (m_pipeserver->listen("test.sock")) {
qDebug() << "STARTED";
}
pipeserver.h
class PipeServer : public QLocalServer
{
Q_OBJECT
public:
PipeServer(Controller *parent = 0);
protected:
void incomingConnection(qintptr socketDescriptor);
pipeserver.cpp
PipeServer::PipeServer(Controller *parent)
{
}
void PipeServer::incomingConnection(qintptr socketDescriptor)
{
qDebug() << "NEW CONNECTION";
// etc...
我看到STARTED消息,但当我运行时从未看到NEW CONNECTION:
socat -v READLINE unix-connect:/tmp/test.sock
谁能告诉我为什么传入连接没有触发?
——更新:只是为了好玩,我钩了一个方法到newConnection信号,该方法在我连接时触发。那么为什么incomingConnection方法没有触发呢?
Michelle,你好像打错字了。上述虚拟保护方法的签名可以在这里阅读。这个论证和你的变体有一点细微的差别。谁能告诉我为什么传入连接没有触发?
修复方法是修改相应头文件和源文件中的声明和定义,如下所示:
void incomingConnection(quintptr socketDescriptor);
// ^
我建议按如下方式开始使用Q_DECL_OVERRIDE
宏:
void incomingConnection(q**u**intptr socketDescriptor) Q_DECL_OVERRIDE;
这将确保当您的Qt应用程序在c++ 11支持下构建时可以得到编译器错误,当它不支持时,它也会编译得很好,但不会给出错误。它使用c++ 11中引入的"override"上下文说明符。
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 当套接字连接断开时检测C/C++Unix
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 无法在windows上使用mingw将sqlite3与c连接
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++关闭套接字以启动新连接
- Live555MediaServer 在每个新连接时重新启动流。为什么将"reuseSource"设置为 true 无法按预期工作?
- 如果 PUB 首先启动并连接到 XPUB/XSUB 代理,则消息将被丢弃,直到 SUB 未连接
- 局域网连接已启动或断开
- 是否允许在同一 Sqlite 数据库连接中启动多个事务
- 安卓 |如何调试应用启动或挂起应用,直到调试器连接
- 服务器关闭并重新启动后,客户端无法连接
- GDB,连接到使用 GDBServer 启动的正在运行的进程
- 在C++代码中重新启动连接时'Broken pipe'错误
- 检测远程桌面连接何时启动
- 如何在 Windows Mobile 中启动互联网连接
- 使用批处理重新启动 c++ 控制台应用程序不会关闭网络连接
- 如何启动python内核并使用ZMQ套接字进行连接
- CoCreateInstance没有启动或连接atlcom服务
- QLocalServer 不会启动传入连接