crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

QTUsers
  опции профиля:
сообщение 31.5.2014, 12:55
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 31.5.2014
Пользователь №: 4145

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как создать задержку в 15 секунд между клиентом и сервером.

server.h

#include <QtNetwork>
#include <QtGui>
#include "myserver.h"

MyServer::MyServer(int nPort, QWidget *parent)
    : QWidget(parent), m_nNextBlockSize(0)
{
    m_ptcpServer = new QTcpServer(this);
       if (!m_ptcpServer->listen(QHostAddress::Any, nPort)) {
           QMessageBox::critical(0,
                                 "Server Error",
                                 "Unable to start the server:"
                                 + m_ptcpServer->errorString()
                                );
           m_ptcpServer->close();
           return;
       }
       connect(m_ptcpServer, SIGNAL(newConnection()),
               this,         SLOT(slotNewConnection())
              );

       m_ptxt = new QTextEdit(this);
       m_ptxt->setReadOnly(true);

       //Layout setup
       QVBoxLayout* pvbxLayout = new QVBoxLayout(this);
       pvbxLayout->addWidget(new QLabel("<H1>Server</H1>"));
       pvbxLayout->addWidget(m_ptxt);
       setLayout(pvbxLayout);
}

MyServer::~MyServer()
{

}

/*virtual*/ 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();
    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_4_5);
    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 sent - " + str;
        m_ptxt->append(strMessage);

        m_nNextBlockSize = 0;

        sendToClient(pClientSocket,
                     "Server Response: Received \"" + str + "\""
                    );
    }
}

// ----------------------------------------------------------------------
void MyServer::sendToClient(QTcpSocket* pSocket, const QString& str)
{
    QByteArray  arrBlock;
    QDataStream out(&arrBlock, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_5);
    out << quint16(0) << QTime::currentTime() << str;

    out.device()->seek(0);
    out << quint16(arrBlock.size() - sizeof(quint16));

    pSocket->write(arrBlock);
}

Прикрепленные файлы
Прикрепленный файл  myclient.txt ( 3.15 килобайт ) Кол-во скачиваний: 374
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 18.2.2025, 22:04