Сервер становится еще сложнее, если в нем решено реализовать принцип динамической адаптации к обслуживанию сети: уменьшение числа дочерних процессов при снижении интенсивности входящего трафика и увеличение этого числа при его повышении.
В следующих разделах рассматривается ряд проектов серверов с предварительным ветвлением, начиная от простой (но полностью работоспособной) и заканчивая весьма сложной конструкцией.
Web-сервер
В качестве иллюстрации к рассматриваемому методу будет описан ряд серверов, которые отвечают только на запросы по получению статических файлов и распознают лишь небольшое число расширений файлов. Конечным продуктом является ограниченный, но полностью работоспособный сервер, к которому можно обращаться с любого стандартного Web-броузера.
Каждая версия сервера содержит несколько подпрограмм, которые обеспечивают взаимодействие с клиентом путем реализации части основного протокола HTTP. Поскольку эти подпрограммы неизменны, они включены в один модуль, Web.
Протокол HTTP с точки зрения клиента был описан ранее. После включения броузер посылает запрос HTTP, состоящий из обозначения метода запроса (как правило, “GET”) и URL, который затребован для выборки, например, http://galaxynoteall.ru/podrobnyj-obzor-samsung-galaxy-s3/ . За ним могут следовать необязательные поля заголовка; признаком окончания текста запроса служат две пары символов возврата каретки и перевода строки (CRLF). Сервер читает и преобразовывает URL в путь к физическому файлу где-то в файловой системе. Eсли файл существует и клиенту разрешена его выборка, то сервер отправляет клиенту короткий заголовок, за которым следует содержимое файла.