![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка дисконнекта
Debug © (2007-08-11 20:40:00)Выдумал следующую схему сетевой работы клиента:
1. Обмен данными происходит пакетами;
2. При коннекте клиент создает поток в котором до отруба в цикле опрашивается неблокирующий сокет:
а) Читаю данные с сокета. Если в очереди чтения накопился полный пакет обрабатываю его и удаляю из очереди;
б) Пишу данные в сокет, если очереди для отправки не пуста;
3. Основной тред работает только с очередями отправки и получения без возможности собственного приема/передачи.
4. Если пакет - запрос чего либо, то основной тред при желании может подождать (в итоге получит пакет с ответом или дисконнект или таймаут).
5. При обрыве связи об этом узнаёт только дочерний поток. И вызывает процедуру обработки дисконнекта OnDisconnect.
Проблема в том, чтобы сделать вызов OnDisconnect от имени основного потока. Подскажите как быть?
P.S. Возможно надо копать в сторону PostMessage?
P.P.S. Показалось, что вопрос относится к общему форуму, а не к сетям =)
Сергей М. (2007-08-13 09:46:00) [1]Зачем осн.потоку нужно знать о дисконнекте ?
Debug (2007-08-12 11:49:00) [2]Воспользовался PostMessage, вроде работает
Anatoly Podgoretsky (2007-08-11 20:45:00) [3]> Debug (11.08.2007 20:40:00) [0]
> P.P.S. Показалось, что вопрос относится к общему форуму, а не к сетям
Возможно.