Чтение на стороне сервера сокета домена Qt unix - PullRequest
0 голосов
/ 04 марта 2019

Я использую 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 голосов
/ 04 марта 2019

Я не вижу обработки условий, когда нет ожидающих соединений.Этот случай приведет к тому, что nextPendingConnection () вернет nullptr (фактически, просто ноль), что может вызвать или не вызвать сбой соединения сигнал / слот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...