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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по работе данного кода.  (Прочитано 2988 раз)
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
Верно ли это? Если да то как можно решить это проблему не используя потоки и новые сокеты. Если есть такое решение вообще. Я просто не до конца понимаю концепции синхронных и асинхронных сокетов.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 04, 2011, 19:59 »

Омг. Где ты там это увидел???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Omg
Гость
« Ответ #2 : Февраль 04, 2011, 20:17 »

Я задаю вопрос, а не говорю, что я где-то что-то увидел. И мне нужен ответ, а не встречный вопрос. Благодарю за понимание.

А теперь объясняю почему я спрашию. Мне необходимо подтвердить свое представление по синхронным и асинхронным сокетам и их работе.
TCP работает так что он посылает данные и ждет подтверждения о их приходе.
Все время ожидания он проставивает, потому закономерно предположить, что он может заниматься чем-то другм, т.е. продвигать следующие пакеты. В этом случае разница будет измеряться в разнице на затрату выполнения кода.
Если же прорт ждет подтверждения, то тогда так как я описал. Потому я и прошу, чтобы кто-то уточнил работу сокетов в данном случае.
« Последнее редактирование: Февраль 04, 2011, 20:22 от Omg » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 04, 2011, 21:03 »

приведенный код отправляет в каждый сокет данные. Тут нет никакого ожидания.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Omg
Гость
« Ответ #4 : Февраль 04, 2011, 21:07 »

Отлично, это мне и нужно было услышать. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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