Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > Как перехватить сообщение с сервера |
Автор: Alehandr 18.9.2006, 11:38 |
Привет народ. Подскажите как лучше решить проблему надо с сервера отправить сообщение клиенту но сам клиент у сервера ничего не запрашивает, как лучше его перехватить на сервере если постояно читать сообщение на клиенто то он будет зависать. Подскажите как лучше ето реализовать |
Автор: Snowy 18.9.2006, 12:08 |
Либо читай в отдельно треде, либо перестрой сокет на асинхронный и лови сообщение. |
Автор: Alehandr 18.9.2006, 12:23 |
Да а если читать в треде как мне потом определять пришло сообщение от сервере или ето клиент запросил сервер а то ему от ветил (ето если в кокой нить процедуре) так ведь может все перепутаться и будет не понятно что ето за сообщение, в треде ведь все сообщения будут перехватываться. Или что то не так понял. |
Автор: Snowy 18.9.2006, 12:32 |
А это не зависит от того, как ты ловишь сообщение. Что сервер пришлёт, то ты и получишь. Где гарантия, что послав запрос серверу, в ответ ты получишь ответ на него, а не что-то другое? Канал-то один. Поэтому каждое сообщение должно себя идентифицировать, если ты хочешь их отличать. Например говоришь серверу "Дай мне данные №22", сервер должен ответить: "вот тебе данные №22, длина такая-то, данные.......". А ты уже независимо от запроса смотришь: "Сервер прислал мне данные №22, значит нужно с ними сделать то-то". А просил ты их или нет - не важно - отрабатывай всегда. Это и называется протоколом. |
Автор: Alehandr 18.9.2006, 13:03 |
А где можно про ето поподробней прочитать или где можно примерчик взять, а то просто стало все путаться в голове ) |
Автор: Snowy 18.9.2006, 13:26 |
А нигде - создание кустомного протокола - это уже разработка архитектуры проекта. Это нужно самому придумывать. |
Автор: Alehandr 18.9.2006, 13:32 |
ладно спасибо за помощь |