Здравствуйте, Forgotten, Вы писали:
F>Ситуация классическая.
F>Клиент — сервер. Клиент подключается и начинает принимать данные. Сервер через некоторый таймаут отправляет данные пока от клиента не получит сигнал о закрытии коннекта. Загвоздка вот в чем. Клиенту нужно переодически выводить данные на экран. И здесь ничего не получается. Функция получения данных с сокета не возвращает управление пока сервер продолжает посылать данные. Технически все реализовано в виде двух бесконечных циклов как на клиенте так и на сервере. Выход из них осуществляется када юзер в клиенте щелкнет на кнопку. Нужно каким-то образом приостановить прием данных, чтоб вывести на экран а потом опять продолжить. И как это сделать кроме как прервать коннект и заново приконнектится — я не знаю. Прошу сильно не ругать если вопрос слишком ламерский. С сокетами познакомился буквально "вчера". Наверняка существует способ сделать все это легко и красиво.
F>Заранее спасибо.
Непонятно, как обрабатывается щелчок юзером на кнопку, если цикл зависате до конца приёма? Если же он обрабатывается, то тогда и данные можно выводить..
Вообще два основных пути, первый лучше имхо:
1) Принимать в дополнительном потоке (отображать в основном)
2) В цикле приёма, вызывать что-то вроде ProcessMessages() таким образом будут обрабатываться сообщения окна, и можно отображать данные
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>