Основы программирования в Linux
Шрифт:
2. Функция
3. Функция
Как и в серверных функциях, клиент получает назад результаты от сервера с помощью трех функций, обслуживающих множественные результаты поисков.
1. Данная клиентская функция запускается для ожидания ответа сервера. Она открывает канал клиента только для чтения и затем повторно открывает файл канала только для записи. Чуть позже в этом разделе вы поймете почему.
2. Далее приведена основная операция
3. И в заключение приведена клиентская функция, помечающая конец ответа сервера.
Второй дополнительный вызов
применяется для защиты от ситуации гонок, когда серверу необходимо быстро откликаться на несколько запросов клиента,
Для того чтобы стало понятнее, рассмотрим такую последовательность событий:
1. Клиент пишет запрос к серверу.
2. Сервер читает запрос, открывает канал клиента и отправляет обратно ответ, но приостанавливает выполнение до того, как успеет закрыть канал клиента.
3. Клиент открывает канал для чтения, читает первый ответ и закрывает свой канал.
4. Далее клиент посылает новую команду и открывает клиентский канал для чтения.
5. Сервер возобновляет работу, закрывая свой конец клиентского канала.
К сожалению, в этот момент клиент пытается считать из канала ответ на свой следующий запрос, но
Разрешив клиенту открыть канал как для чтения, так и для записи, и устранив тем самым необходимость повторного открытия канала, вы избежите подобной ситуации гонок. Учтите, что клиент никогда не пишет в канал, поэтому нет опасности считывания ошибочных данных.
Резюме, касающееся приложения
Вы разделили приложение, управляющее базой данных компакт-дисков, на клиентскую и серверную части, что позволило разрабатывать независимо пользовательский интерфейс и внутреннюю технологию работы с базой данных. Как видите, четко определенный интерфейс базы данных дает возможность каждому важному элементу приложения наилучшим образом использовать машинные ресурсы. Если пойти чуть дальше, можно было бы заменить реализацию с помощью каналов на сетевой вариант и применить выделенный компьютер для сервера базы данных. В главе 15 вы узнаете больше об организации сети.