C++ QLocalServer IPC客户端工作,服务器不工作

C++ QLocalServer IPC客户端工作,服务器不工作,c++,qt,ipc,qlocalsocket,C++,Qt,Ipc,Qlocalsocket,好吧,这个看起来很棘手。我实现了一个QLocalServer来执行一些IPC。但它不能正常工作。客户连接并告诉我他已连接。服务器…嗯…不是,这使我无法接收任何消息 服务器实现如下所示: PipeServer::PipeServer(QString servername, QObject *parent) : QObject(parent) { m_server = new QLocalServer(this); m_server->setSocketOptions(QLoc

好吧,这个看起来很棘手。我实现了一个QLocalServer来执行一些IPC。但它不能正常工作。客户连接并告诉我他已连接。服务器…嗯…不是,这使我无法接收任何消息

服务器实现如下所示:

PipeServer::PipeServer(QString servername, QObject *parent) : QObject(parent) {
    m_server = new QLocalServer(this);
    m_server->setSocketOptions(QLocalServer::WorldAccessOption);

    if (!m_server->listen(servername)) {
        logToFile("Unable to start the Server");
    } else {
        logToFile("Server up and running");
    }

    connect(m_server, SIGNAL(newConnection()), this, SLOT(socket_new_connection()));
}

void PipeServer::socket_new_connection() {

    logToFile("incoming connection");

    /* handling of connection ... */

}
输出服务器:

[Debug]: Server up and running
输出客户端:

[Debug]: ConnectingState 
[Debug]: ConnectedState 
[Debug]: socket_connected 
没有运行服务器的输出客户端:

[Debug]: ConnectingState 
[Debug]: UnconnectedState 
[Debug]: socket_error 
[Debug]: ServerNotFoundError 
如果在连接客户端时关闭服务器,则客户端输出:

[Debug]: ClosingState 
[Debug]: UnconnectedState 
[Debug]: socket_disconnected 
因此,客户机肯定正在连接到服务器,但从未调用服务器的
newConnection()
信号。我甚至试着自己用
m\u server->hasPendingConnections()
…检查连接,但也返回false

[编辑]

我每30秒检查一次服务器状态:

void PipeServer::checkListening(){

if(m_server->isListening()){
    logToFile("server is listening");
} else {
    logToFile("server is NOT listening");
}

if(m_server->hasPendingConnections()){
    logToFile("server has pending connections");
} else {
    logToFile("server has no pending connections");
}

}
哪些产出:

[Debug]: server is listening
[Debug]: server has no pending connections

从您发布的代码来看,它看起来还可以,不过就我个人而言,我会在调用listen()之前连接到newConnection()。您会忘记在PipeServer类的定义中包含Q_OBJECT宏吗?另外,当进行连接调用时,它是否返回一个有效的对象,或者NULL?连接不返回NULL,我将连接函数置于侦听函数之上,仍然是相同的结果运行连接调用时,调试输出窗口中是否有错误消息?否。但是即使连接调用无法工作,我每30秒检查一次服务器是否有挂起的连接,如果socket\u new\u connection()方法没有运行,这将显示一个挂起的连接…只是为了测试,如果您使用函数waitForNewConnection,它是否接收到它?