![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Vovkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Набросал на TidTCPServer и TidTCPClient программки.
И обнаружил очень непонятную работу клиентской части программы. Вот код.
В общем здесь по кнопке зпускается цикл, постоянно ожидаются данные с сервера и на него отправляются данные. Самое станное то, что если сервер закончил передачу даных то этот цикл постоянно возвлащает по ReadStream последние данные, которые принимались. При чём если убрать Write в цикле всё работает как надо. Если сервер закончил передавать сообщения, то и здесь цикл не будет ничего вычитавать (IdTCPClient.IOHandler.InputBuffer.Size = 0). Но если вставить Write как в вышеприведённом тексте, то цикл начинает постоянно молотить и возвращать последний принятый блок данных. Т.е. предположим IdTCPClient.IOHandler.InputBuffer.Size в начале цикла был 100 после всех чтений стал 0, но стоит сделать после этого Write и CheckForDataOnSource(1). Как IdTCPClient.IOHandler.InputBuffer.Size снова почему то равен размеру который был, т.е. 100 и по ReadStream возвращаются теже данные, хотя сервер больше ничего не передаёт. Кто знает как внутренняя кухня инди работает? Что здесь не правильно и как заставить это правильно работать? Это сообщение отредактировал(а) Vovkin - 11.10.2007, 23:42 |
|||
|
||||
Vovkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Ой. Уже разобрался.
Дело вот в чём. Если отправитель делает Write с числом байт 0. То получатель проваливается с флагом наличия данных, но объём данных возвращает от последнего не равного 0 сообщения. У меня просто случайно получилось, что сервер вызывался write с нулём байт. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |