Russian Qt Forum
Ноябрь 22, 2024, 22:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT 5.15 не хочет принять код стандартного примера  (Прочитано 2458 раз)
paibolit
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Сентябрь 02, 2020, 11:23 »

С помощью примера из просторов сети хочу разобраться с TCP соединением двух машин. Пример клиента скомпилился нормально, а пример сервера уже при написании ругается....
Код:
void MyServer::slotNewConnection()
{
    QTcpSocket* pClientSocket = m_ptcpServer->nextPendingConnection();
    connect(pClientSocket, SIGNAL(disconnected()),
            pClientSocket, SLOT(deleteLater())
           );
    connect(pClientSocket, SIGNAL(readyRead()),
            this,          SLOT(slotReadClient())
           );

    sendToClient(pClientSocket, "Server Response: Connected!");
}
void MyServer::slotReadClient()
{
    QTcpSocket* pClientSocket = (QTcpSocket*)sender();
    QTcpSocket *tcpSocket = (QTcpSocket*)sender();
    QDataStream clientReadStream(&tcpSocket);
    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_5_7);
    for (;;) {
        if (!m_nNextBlockSize) {
            if (pClientSocket->bytesAvailable() < sizeof(quint16)) {
                break;
            }
            in >> m_nNextBlockSize;
        }

        if (pClientSocket->bytesAvailable() < m_nNextBlockSize) {
            break;
        }
        QTime   time;
        QString str;
        in >> time >> str;

        QString strMessage =
            time.toString() + " " + "Client has sended - " + str;
        m_ptxt->append(strMessage);

        m_nNextBlockSize = 0;

        sendToClient(pClientSocket,
                     "Server Response: Received \"" + str + "\""
                    );
    }
}
uploads
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 02, 2020, 11:49 »

У тебя тут несколько глупых ошибок - внимательно прочитай их, посмотри документацию и у тебя все получится. Для примера,
QDataStream clientReadStream(&tcpSocket);
стоит заменить на
QDataStream clientReadStream(tcpSocket);
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
paibolit
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #2 : Сентябрь 02, 2020, 12:40 »

Смотрел я документацию... Если бы всё понял и был бы не новичком, не задавал бы глупых вопросов уважаемым и занятым людям.........
Строка на которую указали - это уже были истерические )) попытки исправить ситуацию  Смеющийся(просто вставил две строки из похожего кода чтобы убедится что проблема не в компиляторе). Эта строка и предыдущая к данному коду не относятся....
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 02, 2020, 12:49 »

Я могу тебе точно сказать, что проблема не в компиляторе. Улыбающийся Сделай #include <QtNetwork/QTcpSocket> вверху файла, часть ошибок уйдет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.