powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Асинхронное API для клиента
25 сообщений из 54, страница 2 из 3
Асинхронное API для клиента
    #40134135
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По протоколам непонятно. Будет FB3 работать с 10-м протоколом или нет? Если нет, то какой минимальный протокол указывать для FB3?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134146
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам же и отвечаю: с 10м протоколом 3й FB не работает. Рвёт связь с ответом OP_REJECTED без объяснения причин
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134150
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все современные версии ФБ поддерживают от протокола 10 (включительно) и выше. Так что должно работать. Он тебе прямо на op_connect возвращает op_reject? Если да, то покажи содержимое op_connect.
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134154
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну если только в таком виде
запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
00 00 00 01 00 00 00 13 00 00 00 03 00 00 00 01 
00 00 00 16 2F 76 61 72 2F 64 61 74 61 62 61 73 
65 73 2F 64 62 31 2E 66 64 62 00 00 00 00 00 01 
00 00 01 31 09 06 53 59 53 44 42 41 08 03 53 72 
70 0A 03 53 72 70 07 FF 00 39 41 41 34 46 30 38 
41 31 39 41 34 31 36 31 30 31 35 43 42 34 36 41 
44 43 35 36 39 34 34 39 34 32 39 32 42 33 35 34 
39 38 44 33 32 36 34 38 46 31 35 38 33 36 33 43 
36 33 36 31 38 37 34 42 41 46 42 43 45 32 43 36 
37 32 45 34 31 37 35 30 35 36 43 38 43 30 31 44 
33 42 46 34 39 44 30 32 43 39 42 42 30 33 32 42 
35 38 44 44 35 36 46 38 44 35 39 37 35 35 43 39 
42 44 30 43 32 36 34 32 39 34 42 43 30 34 37 45 
30 36 34 46 33 42 31 33 37 39 32 36 38 33 35 36 
39 35 42 45 30 33 33 32 30 33 30 39 41 44 44 41 
39 36 38 39 33 30 45 46 41 45 37 45 45 38 34 42 
37 36 31 33 39 35 31 37 46 45 42 35 43 31 30 43 
33 38 35 41 33 44 46 34 34 30 44 42 32 42 39 35 
31 30 32 43 39 36 41 30 31 34 31 32 31 33 39 46 
34 31 44 34 43 33 37 32 41 31 30 38 36 45 32 33 
42 36 44 39 43 43 32 07 03 01 30 37 0B 04 01 00 
00 00 01 05 61 72 74 79 6F 04 08 64 65 6E 69 73 
70 63 32 06 00 00 00 00 00 00 00 0A 00 00 00 01 
00 00 00 00 00 00 00 05 00 00 00 02 

Ответ
Код: plaintext
00 00 00 04 


В запросе указываю плагин аутентификации Srp и список плагинов тоже Srp, шифрование вкл. Если же в запросе перечисляю протоколы с 10 по 17, то сервер отвечает нормально с OP_COND_ACCEPT

FB V3.0.7.33374
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134158
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10-й протокол это функциональность ФБ 1.5. Какое там шифрование или Srp?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134159
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen
В запросе указываю плагин аутентификации Srp
... который появился, как бы не в десятой версии протокола.
Или вы считаете, что можно скрестить лучшее из двух миров и ходить к новому серверу со старой версией протокола и новыми плагинами?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134163
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я без понятия когда появился Srp. Гугл не помогает. И вообще по версиям протоколов fb гугл умалчивает. Видимо не знаю по каким словам гуглить ))

Так в какой версии появился Srp?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134164
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen
Я без понятия когда появился Srp. Гугл не помогает.
Зато помогает вдумчивое чтение.
Если описаниe протокола , которое вам рекомендовали, прямо во введении указывает, что описывает 10-ю и, частично, 11-ю версии протокола, не содержит ничего про плагины и шифрование, то, вероятно, будет алогично, указывать "какие-то там плагины" в этой версии протокола?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134167
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov , хорошо, что хоть какое-то описание протокола есть. Но в целом оно малополезное и может служить лишь информацией для краткого ознакомления. Но что-то делать по этому описанию не имеет смысла.
В нём про аутентификацию написано только 3 слова: "Buffer User identification". И больше нигде ничего ни слова про это не упоминается. Какие из этого выводы можно делать мне не понятно.
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134177
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда можно пошариться по исходникам, обнаружить protocol.h и, типа, с удивлением узнать, что:
Код: plaintext
1.
// Protocol 13 has support for authentication plugins (op_cont_auth).

А если читать примечания к выпуску , то окажется, что: "From version 3 onward, Firebird’s architecture supports plug-ins."
И снова вдумчивое чтение позволяет делать обобщения невиданной глубины.
Сарказм, если что.

P.S.
Вы правда думаете, что существует руководство для начинающих "Как правильно делать собственную реализацию сетевого протокола Firebird"?
Или, всё-таки, надо сопоставить ваши хотелки с тем бюджетом времени, которые вы готовы потратить на ещё одну реализацию?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134192
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно много где рыться и много чего обнаружить, даже то, о чём писал Dimitry Sibiryakov )) Я лишь пытаюсь реализовать хотя бы подключение с аутентификацией по готовым решениям, упрощая всё до как мне кажется необходимого минимума. И соответственно удивляюсь, что с моей точки зрения всё идёт не по плану
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40134303
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Никогда и ничего не доводи до абсурда, ибо человек, желающий трапезовать поздно вечером, рискует трапезовать рано по утру".
Не надо делать априорных предположений там, где у вас нет вообще никакого опыта.
Если получение опыта требует (много) времени - сопоставьте тот бюджет, который вы готовы потратить и тут хотелку, которая вам, типа, нужна.
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135052
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню. Statement можно переиспользовать много раз после op_allocate_statement? Не обязательно каждый раз заново аллоцировать новый statement (и освобождать предыдущий) для выполнения нового запроса?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135073
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135082
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но закрывать курсор (op_free_statement + DSQL_close) перед новым prepare необходимо? Или это не обязательно?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135089
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

обязательно
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135325
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна консультация по op_fetch_response.
1) Может ли сервер прислать ответ с count > 1 (под count имеется ввиду второй параметр)
2) После op_fetch сервер отвечает несколькими op_fetch_response, которые клиент должен вычитывать без отправки доп. команд серверу?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135341
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen
получаешь ровно столько же op_fetch_response, в каждом из них msg_count == 1

поправлюсь - можешь получить меньше, если курсор закончился посередине пачки. В последнем op_fetch_response будет msg_count == 0 (признак EOF).
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135342
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, случайно вместо ответа затер предыдущее сообщение :-)

ArtDen
Нужна консультация по op_fetch_response.
1) Может ли сервер прислать ответ с count > 1 (под count имеется ввиду второй параметр)
2) После op_fetch сервер отвечает несколькими op_fetch_response, которые клиент должен вычитывать без отправки доп. команд серверу?

1) Нет. Ты отправляешь op_fetch с msg_count > 0, получаешь ровно столько же op_fetch_response, в каждом из них msg_count == 1.
2) Строго говоря, не обязательно. Просто чтобы обработать ответ на свою доп. команду, тебе все равно придется вычитать все op_fetch_response из буфера. Но если сильно хочется запросить новую пачку записей до вычитывания предыдущих - почему нет.
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135344
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. отправляя op_fetch с msg_count, я гарантированно получаю op_fetch_response в количестве не более чем msg_count (каждое с msg_count == 1) ?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135368
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Повозившись в отладке, я идею понял так: после отправки op_fetch, я всегда вычитываю все ответы op_fetch_response пока не придёт ответ с msg_count = 0. Причём если у последнего ответа status == 100, то данные в курсоре закончились. А если status == 0, то данные ещё есть и их можно запросить через очередной op_fetch

Это правильно?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135393
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, все верно
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135419
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю мучать ) Хочу понять, когда стоит вызывать op_free_statement с DSQL_close. Понятно, что после выполнения запроса select точно надо. Но если, например, 1) был op_prepare_statement с select, но до op_execute дело не дошло или 2) было выполнение запроса с insert, update или delete?
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135436
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenХочу понять, когда стоит вызывать op_free_statement с DSQL_close.

В соответствующей функции API. В нём по-любому должна быть функция закрытия
курсора. Или ты хочешь делать это автоматически после вытаскивания всего
резалт-сета? Тогда не забудь удостовериться, что он однонаправленный и не FOR
UPDATE. А то нехорошо получится если пользователь захочет с ним что-нибудь
сделать, а ты его уже закрыл...
...
Рейтинг: 0 / 0
Асинхронное API для клиента
    #40135438
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, я имею ввиду в каких случаях надо вызывать op_free_statement с DSQL_close перед повторным op_prepare_statement или op_execute
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Асинхронное API для клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (2), Yandex Bot 3 мин.
Пользователи онлайн (13): Анонимы (10), Yandex Bot, Bing Bot, Google Bot 2 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]