Russian Qt Forum

Qt => Работа с сетью => Тема начата: poops от Декабрь 24, 2009, 13:49



Название: Проблема при отладке сетевого приложения
Отправлено: poops от Декабрь 24, 2009, 13:49
Отлаживаю приложение рассылающее файлы по узлам сети. Количество узлов задаётся в конф. файле.
Соединение выполняется в след. коде:
Код:
if(socket->state()==QAbstractSocket::ConnectedState)
        socket->disconnect();
    socket->connectToHost(ip,port);
Отлаживаю на своей машине на 2ух узлах. Соот. ip 127.0.0.1 для всех узлов, а port 5678 для первого узла, 1579 для второго.
socket - указатель на QTcpSocket - поле класса, который выполняет весь цикл обмена.
Запускаю два экземпляра приложения-получателя с разными портами 5678 и 1579.
В приложении используется класс, унаследованный от QTcpServer.
На порт подвешивается след. проседурой:
Код:
bool MainClass::startListen(quint16 _port)
{
    port= _port;
    if(!listen(QHostAddress::Any,_port))
    {       
        emit showDebugMes(tr("Не могу запустить прослушку сервера"));
        return false;
    }
    emit showDebugMes(tr("Сервер запущен на порту %2 (%1)").arg(QDateTime::currentDateTime().toString()).arg(QString::number(_port)));
    return true;
}

Проблема такая: все файлы идут на сервер слушающий порт 5678. Причем в отладчике проверял порт и в функции startListen() и в socket->connectToHost() - порты передаются соответсвующие, на всё идет на первый сервер. Что за хрень может быть?




Название: Re: Проблема при отладке сетевого приложения
Отправлено: Dendy от Декабрь 24, 2009, 14:38
Вы точно во второй программе коннектитесь на 1579 порт?


Название: Re: Проблема при отладке сетевого приложения
Отправлено: poops от Декабрь 24, 2009, 14:52
Коннект идёт из одной и той же проги на два разных экземляра сервера прослушивающих разные порты. Короче при отправке файла есть xml файл параметров в котором n-ое количество узлов node каждый со своим набором дочерних узлов-параметров (ip,port,путь_к_файлу и т.д.) И вот он перебирает эти узлы и для каждого отправляет файл. Для серверов порт для прослушки устанавливается в одном месте - процедуре startListen которую я написал выше, больше нигде. коннект к этим приложением-серверам идёт на разные порты для разных узлов (проверял в отладчике параметры socket->connectToHost). Если это не фишка qt, и можно отлаживать несколько подключений на разные порты на локальную машину, то буду копать дальше (хотя куда хз пока). Сейчас попробую по машинам раскидать сервера и отпишусь


Название: Re: Проблема при отладке сетевого приложения
Отправлено: poops от Декабрь 24, 2009, 15:31
Чукча тупой, вместо socket->disconnectFromHost() корторый разрывает соединение, использовал socket->disconnect() который унаследован от QObject соответсвенно делает совсем не то что мне надо :-)


Название: Re: Проблема при отладке сетевого приложения
Отправлено: Dendy от Декабрь 24, 2009, 15:36
Если бы только все были такие "тупые" (-:


Название: Re: Проблема при отладке сетевого приложения
Отправлено: poops от Декабрь 24, 2009, 16:05
Короче по-любому сначала плотно читается документация :-)