![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
indiclient.lastcmdresult [D7, XP]
malyar © (2007-08-21 22:34:00)всем привет
есть код
------------------------------
idclient.sendcmd(....)
idclient.lastcmdresult
------------------------------
народ подскажите может ли происходить выход из lastcmdresult
раньше чем сервер ответит на запрос sendcmd,
если idclient.readtimeout=0 и на форму помещен инди антифризе.
если может то при каком условии ?
malyar (2007-08-24 23:24:00) [1]to сергей
данная логика выбрана специально чтоб выявить возможные баги ,
таймер использовался в качестве БОТОВОДА.
антифризе и таймер действительно не совместимы именно их совокупность
и давала непредсказуемость поведения проге !!
Сергей М. (2007-08-23 08:12:00) [2]
> malyar (23.08.07 00:04) [3]
Хотя - стоп...
Вру.
Ты антифриз упомянул и таймер.
С учетом этих обст-в ситуация с "перепутом" запросто возможна.
Меняй логику.
Сергей М. (2007-08-23 08:10:00) [3]
> malyar (23.08.07 00:04) [3]
У тебя ошибка в 17-й строке.
Инди работает в блок.режиме, асинхронность исключена.
Германн (2007-08-23 00:31:00) [4]
> в общем ситуация такая
> моя процедура в которой используются
> sendcmd и lastcmdresult
> вызывается по таймеру с интервалом 50мс,
>
Ох как я не люблю таких реализаций! При возможности использования асинхронной работы использовать таймеры + синхронные методы? Тут может сложится масса "очучений". Лучше уж обкуриться. :(
А по сути надо разбираться. Вести логи как на сервере, так и на клиентах.
malyar (2007-08-23 00:04:00) [5]в общем ситуация такая
моя процедура в которой используются
sendcmd и lastcmdresult
вызывается по таймеру с интервалом 50мс,
передаётся камонда sendall или sendto (выбираются по randomize),
сервер на них отвечает либо sendall ok либо sendto ok (пока ничего другого он не делает)
и иногда происходит такая вещ :
на запрос sendall получаю ответ sendto ok и наоборот
если подключено менее 10 клиентов (array of tidtcpclient)
этого не происходит
а чем больше клиентов тем чаще кривые ответы.
складывается такое ощущение что пока сервер думал как ответить на первый запрос то успел получить и ответить на второй от одного и тогоже клиента
Сергей М. (2007-08-22 09:19:00) [6]Вопрос поставлен неверно.
На строчку idclient.lastcmdresult можно попасть только и только в том случае, когда ужеполучен ответ сервера.
Антифриз здесь вообще ни причем.
Сергей М. (2007-08-22 08:35:00) [7]
> выход из lastcmdresult
Вообще-то это свойство.
Все что происходит при чтении этого св-ва - это чтение приватного значения поля FLastCmdResult.