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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема при отладке сетевого приложения  (Прочитано 4061 раз)
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() - порты передаются соответсвующие, на всё идет на первый сервер. Что за хрень может быть?


« Последнее редактирование: Декабрь 24, 2009, 13:59 от poops » Записан
Dendy
Гость
« Ответ #1 : Декабрь 24, 2009, 14:38 »

Вы точно во второй программе коннектитесь на 1579 порт?
Записан
poops
Гость
« Ответ #2 : Декабрь 24, 2009, 14:52 »

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

Чукча тупой, вместо socket->disconnectFromHost() корторый разрывает соединение, использовал socket->disconnect() который унаследован от QObject соответсвенно делает совсем не то что мне надо :-)
Записан
Dendy
Гость
« Ответ #4 : Декабрь 24, 2009, 15:36 »

Если бы только все были такие "тупые" (-:
Записан
poops
Гость
« Ответ #5 : Декабрь 24, 2009, 16:05 »

Короче по-любому сначала плотно читается документация :-)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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