Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как отправить через 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-32726
LazorenkoX
2002-03-30 00:26
2002.04.11
SendMessage or What?


1-32746
IGI
2002-03-29 12:57
2002.04.11
Файлы


4-33001
Vladimir_Shk
2002-02-07 11:00
2002.04.11
EventLog


3-32623
koks
2002-03-22 11:29
2002.04.11
ADO -> Access 2000 ????


1-32805
Dmitry Sheenok
2002-04-01 10:48
2002.04.11
Определить по хендлу состояние окна SW_SHOW, SW_HIDE и т.д





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский