Перейти к содержанию

Рекомендуемые сообщения

Вопрос к тем кто использовал классы ipstream и ipstmserver.

Вобще говоря у меня 2 вопроса:

- почему происходит блокировка при вызове метода read класса ipstream когда count > реально переданных данных (интересует потому, что при вызове системного вызова read в подобной ситуации, функция возвращает реальное число считанный байт и блокировка на возникает)

- объясните странное поведение метода waitfor(). Небольшой кусок кода:

while(m_client->waitfor(m_timewait) && *size<m_datawindowsize)
        {
            m_client->read((m_datawindow + *size), 1);
            (*size)++;
        }

при передачи кол-ва данных N < m_datawindowsize waitfor() говорит что в канале есть данные даже после считывания N байт и функция read далее считывает '\0' до тех пор пока всех считанных данных не станет m_datawindowssize(т.е. пока не выйдет по условию цикла). Данный кусок кода есть и на клиенте и на сервере, причем сначала такой глюк был на сервере, а потом на сервере waitfor() стал вести себя "нормально", но уже на клиенте нет. Данные сначала передает клиент серверу, а затем сервер клиенту. Никаких "левых" данных не передается(проверял).

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...