Помогите определить назначение программы и ее логическую структуру

Тема в разделе "Общие вопросы по С и С++", создана пользователем dmitryV, 30 май 2009.

  1. dmitryV

    dmitryV Гость

    // TCP клиент
    #include "../net/net.h"

    TCPClient::TCPClient(QObject * parent, const char * name) : QObject(parent, name), QDataStream()
    {
    err_counter = 0;
    err_prev = 0;
    socket = new TCPSocket(this);
    connect(socket, SIGNAL(connected()), SLOT(socketConnected()));
    connect(socket, SIGNAL(connectionClosed()), SLOT(socketConnectionClosed()));
    connect(socket, SIGNAL(error(int)), SLOT(socketError(int)));
    connect(socket, SIGNAL(delayedCloseFinished()), SLOT(socketClosed()));
    connect(socket, SIGNAL(bytesWritten(int)), SLOT(socketWrite(int)));
    setDevice(socket);
    connect(&restart_timer, SIGNAL(timeout()), SLOT(restartTimeout()));
    return;
    }

    void TCPClient::setName(const QString & name)
    {
    client_name = name;
    return;
    }

    void TCPClient::restartConnection(const QString & host, Q_UINT16 port)
    {
    connection_host = host;
    connection_port = port;
    restart_connection = TRUE;
    if(socket->state() == QSocket::Idle)
    socket->connectToHost(connection_host, connection_port);
    else
    {
    socket->close();
    if(socket->state() != QSocket::Closing)
    socketClosed();
    }
    return;
    }

    void TCPClient::closeConnection(void)
    {
    restart_connection = FALSE;
    socket->close();
    if(socket->state() != QSocket::Closing)
    socketClosed();
    return;
    }

    void TCPClient::socketConnected(void)
    {
    if(restart_timer.isActive())
    restart_timer.stop();
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("выполнил соединение"), black);
    emit connected();
    return;
    }

    void TCPClient::socketConnectionClosed(void)
    {
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("удаленный сервер закрыл соединение"), magenta);
    emit connectionClosed();
    if(restart_connection && !restart_timer.isActive())
    restart_timer.start(RESTART_TIME_OUT);
    return;
    }

    void TCPClient::socketClosed(void)
    {
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("закрыл соединение"), darkMagenta);
    emit connectionClosed();
    if(restart_connection && !restart_timer.isActive())
    restart_timer.start(RESTART_TIME_OUT);
    return;
    }

    void TCPClient::socketError(int err)
    {
    err_counter++;
    if(err_counter == 1 || err_prev != err)
    {
    switch(err)
    {
    case QSocket::ErrConnectionRefused :
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("соединение не выполнено", "connection refused"), magenta);
    break;
    case QSocket::ErrHostNotFound :
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("удаленный сервер не найден", "host not found"), magenta);
    break;
    case QSocket::ErrSocketRead :
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("ошибка чтения из сокета", "error socket read"), red);
    break;
    }
    }
    err_prev = err;
    if(restart_connection && !restart_timer.isActive())
    restart_timer.start(RESTART_TIME_OUT);
    return;
    }

    void TCPClient::restartTimeout(void)
    {
    if(restart_connection)
    {
    if(socket->state() == QSocket::Idle)
    socket->connectToHost(connection_host, connection_port);
    }
    else
    restart_timer.stop();
    return;
    }

    void TCPClient::socketWrite(int nbytes)
    {
    emit StateMsg(tr("TCP клиент для") + " " + client_name + ": " + tr("отправлено") + " " + QString::number(nbytes) + " " + tr("байт", "во множественном числе"), black);
    return;
    }
    Посмотреть вложение net.h
     
Загрузка...

Поделиться этой страницей