Вопрос к тем кто использовал классы 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() стал вести себя "нормально", но уже на клиенте нет. Данные сначала передает клиент серверу, а затем сервер клиенту. Никаких "левых" данных не передается(проверял).
Ум подобен желудку. Важно не то, сколько ты в него вложишь, а то сколько он сможет переварить.