Сервер
Структурная схема сервера представлена на «рис.1». Интерфейс сервера представлен на «рис.2».
При запуске сервера создается именованный канал с именем .pipeSamplePipe. Канал открывается для чтения и записи. Режим приема сообщений. Буферы размером в 512 байт.
Рис.1. Структурная схема сервера
После успешного создания канала происходит подключение к базе данных при помощи функции sqlite3_open(). Работа ведется с базой данных my_1_database.dblite. Если ее существует файла, то создается новая пустая база данных. В противном случае открывается уже существующая.
Так как сервер многопоточный, дескриптор подключения для всех потоков один. Таким образом, для всех клиентов существует одно подключение к базе данных.
Если все предыдущие шаги выполнены успешно, сервер переходит в ожидание подключения клиента. После подключения создается поток, в котором происходит обработка подключения. А основной поток переходит в ожидание нового подключения.
Блок-схема работы потока представлена на «рис.3». В созданном потоке происходит чтение входящей строки. Для этого вызывается функция ReadFile(). Если во время чтения не произошло ошибок, то вызывается функция void GetAnswerToRequest( wchar_t* pchRequest, LPTSTR pchReply, LPDWORD pchBytes ). Блок-схема работы функции GetAnswerToRequest представлена на рис.4.
Так как API SQLite работает со строками типа char, а при работе с PIPE строки типа wchar_t. Поэтому перед передачей SQL запроса происходит приведение его типа к char. После передачи полученного запроса и его исполнения клиенту передается либо строка с ошибкой, либо ответ, что запрос исполнен успешно.
Рис.2. Результат работы серверного приложения после запуска
Рис.3. Структурная схема одного потока на сервере
клиентское приложение сервер
Рис.4. Структурная схема функции GetAnswerToRequest
- Исследование предметной области
- Постановка задачи
- Описание SQLite
- Устройство и характеристики СУБД SQLite
- Методы работы с базой данных
- Описание PIPE под Windows
- Общие понятия
- Именованные каналы
- Методы WinAPI для передачи данных
- Замысел технического решения
- Реализация взаимодействия через PIPE
- Исполнение запросов к SQLite
- Описание программы
- Сервер
- Клиент
- API
- Заключение
- Преимущества серверов приложений:
- Архитектура приложений бд, механизмы доступа к данным.
- Клиентское приложение:
- Клиентское приложение:
- Разработка клиентских приложений на основе архитектуры «Клиент – сервер»
- Программные и объектные интерфейсы для взаимодействия Web-сервера с субд-сервером: db Library, odbc, rdo, ole db, ado.
- 9.5.Клиенты, серверы. Клиентские приложения, серверы баз данных.
- 23.2.2. Доступ к базам данных в двухзвенных моделях «клиент-сервер»