qtcpserver qsocketnotifier: invalid socket and type 'Рид', disabling только не удается в производстве

Я провожу несколько дней головы с этим. У меня есть Сервер, который принимает связи клиентов (c ++ с Qt5), для этого у меня есть QTcpServer, которого я соединяю сигнал "newConnection ()". Когда я получаю этот сигнал, я достаю socket:

        while (server->hasPendingConnections())
    {
        QTcpSocket *socket = server->nextPendingConnection();
        connect (socket,SIGNAL(readyRead()), this,SLOT(slotReadyRead()));
        connect (socket, SIGNAL(disconnected()),this,SLOT(slotDisconnected()));
        QByteArray *buffer = new QByteArray();
        buffers.insert(socket, buffer);
        sendAck(socket);
    }

У меня есть таблица hash (буферы) в той, кто сохраняла буфер socket, с socket как индексом, и я присоединяю сигналы к socket (readyRead и disconnected). Когда я хочу написать в socket, я это возвращаю таблицы hash, и когда я получаю в socket, он приносит меня в slotReadyRead () где я обрабатываю буфер:

void Class::slotReadyRead()
{
    QTcpSocket *socket = static_cast<QTcpSocket*>(sender());
    QByteArray *buffer = buffers.value(socket);
    while (socket->bytesAvailable()>0)
    {
        buffer->append(socket->readAll());
    }
    QByteArray bufferCons = *buffer;
}

Все это функционирует правильно в моей среде разработки (виртуальная машина с Debian 9). Но когда я это устанавливаю в реальной машине случайной формы, я засолил этот warning:

qsocketnotifier: invalid socket <nro del socket> and type 'Read', disabling..

И он закрывает для меня коммуникацию с клиентом. Я не способен находить проблему, установил среду разработки в компьютере производства и составленный прямо с там и продолжи делать это. Только функционируй хорошо в виртуальной машине, я попытался в большем количестве виртуальных машин и функционируй, но когда я это приношу в реальную машину, он дает мне эту неудачу.

0
задан 18.10.2019, 23:50
1 ответ

В конце концов resultГі, что не был проблемой socket, использовало одну librerГ - в modbus и Г©sta в algГєn момент debГ, - чтобы превышать батарейку или что-то и меня разбивал socket, который не tenГ - ни во что, что можно было видеть. Однажды удаленная эта librerГ - в, не меняя ничего mГЎs, socket поддерживает отверстие без проблемы. porquГ© оно функционировало хорошо в mГЎquina виртуальный и плохой в mГЎquina реально, quedarГЎ в ней incГіgnita, тайны жизни XD.

0
ответ дан 01.12.2019, 15:19

Теги

Похожие вопросы