Russian Qt Forum

Qt => Работа с сетью => Тема начата: Omg от Февраль 04, 2011, 19:55



Название: Вопрос по работе данного кода.
Отправлено: Omg от Февраль 04, 2011, 19:55
Код:
QList<QTcpSocket*>::iterator it=ipAddress->begin();
for(; it != ipAddress->end(); ++it){
        pSocket = *it;
        QByteArray  arrBlock;
        QDataStream out(&arrBlock, QIODevice::WriteOnly);
        out.setVersion(QDataStream::Qt_4_5);
        out << quint16(0);
        out << quint8(type);
        out << "" + text;

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

        pSocket->write(arrBlock);
}
Верно ли я понимаю работу данного кода: Предположим у нас есть 3 клиента.
1 - пинг 15
2 - пинг 300
3 - пинг 10
В листе они расположены так же. Т.е. цикл начнется с первого.
Отправили данные первому, ждем подтверждения о получении. Потом наичнаем отправлять второму и т.д.
в итогде время между приходом сообщения и получением его адресатами получается такое (в идеале, учитываем только сеть):
1-15
2-315
3-325
Верно ли это? Если да то как можно решить это проблему не используя потоки и новые сокеты. Если есть такое решение вообще. Я просто не до конца понимаю концепции синхронных и асинхронных сокетов.


Название: Re: Вопрос по работе данного кода.
Отправлено: Пантер от Февраль 04, 2011, 19:59
Омг. Где ты там это увидел???


Название: Re: Вопрос по работе данного кода.
Отправлено: Omg от Февраль 04, 2011, 20:17
Я задаю вопрос, а не говорю, что я где-то что-то увидел. И мне нужен ответ, а не встречный вопрос. Благодарю за понимание.

А теперь объясняю почему я спрашию. Мне необходимо подтвердить свое представление по синхронным и асинхронным сокетам и их работе.
TCP работает так что он посылает данные и ждет подтверждения о их приходе.
Все время ожидания он проставивает, потому закономерно предположить, что он может заниматься чем-то другм, т.е. продвигать следующие пакеты. В этом случае разница будет измеряться в разнице на затрату выполнения кода.
Если же прорт ждет подтверждения, то тогда так как я описал. Потому я и прошу, чтобы кто-то уточнил работу сокетов в данном случае.


Название: Re: Вопрос по работе данного кода.
Отправлено: Пантер от Февраль 04, 2011, 21:03
приведенный код отправляет в каждый сокет данные. Тут нет никакого ожидания.


Название: Re: Вопрос по работе данного кода.
Отправлено: Omg от Февраль 04, 2011, 21:07
Отлично, это мне и нужно было услышать. Спасибо.