Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Как отправить через TClientSocket несколько запросов подряд?   Найти похожие ветки 

 
eblade   (2002-01-25 18:56) [0]

Как отправить через TClientSocket несколько запросов подряд?


 
Digitman ©   (2002-01-28 09:18) [1]

точно так же, как один-единственный


 
Ghost. ©   (2002-01-28 09:42) [2]

И получить назад несколько ответов подряд? :0)


 
eblade   (2002-01-28 10:01) [3]

меня интересует вопрос: где нужно отлавливать окончание работы по первому запросу для посылки второго? нужно ли это делать при отсоединении или при записи?


 
Ghost. ©   (2002-01-28 11:17) [4]

Так ты обьясни что за запросы, куда ты их шлешь и че тебе от них надо.. если просто запросы (как можно понять из твоего вороса) так шли скока хочешь


 
Digitman ©   (2002-01-28 12:21) [5]

>eblade
Есть такое понятие - протокол информационного обмена (между клиентом и сервером в дан.случае). Как правило, он подразумевает следующее (если не оговорен механизм асинхронных обратных вызовов сервером клиента):
- если клиент сделал функциональный запрос к серверу (т.е. клиент послал серверу некую инф-цию, по получению которой сервер обязан возвратить клиенту результат ее обработки), то клиент ОБЯЗАН ЖДАТЬ получение этого результата от сервера, и до тех пор (в пределах тайм-аута ожидания), пока результат текущего запроса клиентом не получен, он не имеет права посылать серверу следующий запрос; по получению результата клиент обязан проанализировать его корректность в контексте содержания тек.запроса и разорвать соединение, если ответ некорректен (сервер ответил не тем, что ожидалось) - дальнейшее взаимодействие с сервером бессмысленно : говорят, что "нарушен протокол инф-го обмена".
- если клиент сделал процедурный запрос к серверу (т.е. клиент послал серверу некую инф-цию, по получению которой сервер обязан просто выполнить некую последовательность действий, не возвращая клиенту результата их выполнения), то клиент НЕ ОБЯЗАН ЖДАТЬ получения результата от сервера (его попросту не должно быть), и имеет право посылать серверу следующий запрос.


 
eblade   (2002-01-28 18:45) [6]

>Digitman
спасибо за познавательную лекцию :)
теперь буду знать

>Ghost
у меня есть, к примеру массив из трех запросов, которые нужно послать серверу через один TClientSocket клиента, получить результат и обработать его.

Вопрос в том, что и где мне нужно отлавливать после отсылки первого запроса. По идее, в OnRead нужно контроллировать окончание принятия ответа и после этого отсылать новый запрос. Но как это осуществить?


 
Polevi ©   (2002-01-28 19:33) [7]

Тебе необходимо запрос и ответ упаковывать в некую структуру, в которой хранить размер передаваемых данных. Тогда в OnRead ты из сокета читаешь сначала размер данных=N, затем анализируешь количество байт в гнезде - если там данных<N - ждешь или рвешь связь (это уже решай сам). Иначе читаешь N байт и после этого посылаешь следующий запрос.


 
Polevi ©   (2002-01-28 19:36) [8]

PS
Это несколько упрощенный алгоритм, более подробно лень писать :-) Хотя в свое время Digitman © не поленился, рассказывая мне примерно тоже самое, за что большое ему спасибо. Если тебе интересно - пиши мне мылом, я тебе вышлю его урок - он у меня где то сохранен..



Страницы: 1 вся ветка

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
6-32910
Ruff-Fish
2001-12-28 09:47
2002.04.11
Как определить координатора локальной сети?


3-32619
Delph
2002-03-22 12:08
2002.04.11
Как определить размер поля? (ORACLE, BDE)


1-32761
НОВИЧОККККК
2002-03-30 21:13
2002.04.11
ПОМОГИТЕ(СРОЧНО)


1-32850
AFROLOV
2002-03-28 15:37
2002.04.11
Как узнать что пользователь нажал функциональную клавишу (F1-F12)


3-32647
SZap
2002-03-16 13:41
2002.04.11
TQuery.SQL