Qt Unix域套接字服务器端阅读

时间:2019-03-04 15:21:17

标签: qt sockets unix

我正在将Qt用于Unix域套接字,但我有一个问题: 我希望服务器端在建立连接后立即阅读从客户端发送的消息,以下是我的代码

if (!server->listen("mySocket2")) {

    //lisetn for new connection

    close();
    return;
}
connect(server, &QLocalServer::newConnection, this, &MainWindow::readData);

在readData函数中

QLocalSocket *clientConnection = server->nextPendingConnection();

connect(clientConnection, &QLocalSocket::disconnected,
        clientConnection, &QLocalSocket::deleteLater);
connect(clientConnection,&QLocalSocket::readyRead,
        this,&MainWindow::readyReadData);

在readyReadData函数中

    QByteArray block;
    block=clientConnection->readAll();
    qDebug()<<block;
    clientConnection->disconnectFromServer();

但是应用程序总是崩溃,您能在这方面给我建议吗?

1 个答案:

答案 0 :(得分:0)

在没有挂起的连接时,我看不到任何条件处理。这种情况将导致nextPendingConnection()返回nullptr(实际上只是一个零),这可能会也可能不会导致信号/插槽连接失败。