Создание веб-сервера на языке c# (дополнение)

Данная статья является дополнением к предыдущей статье: как создать веб-сервер с помощью языка c#. В ней мы рассмотрим, как в зависимости от запроса клиента, можно возвращать содержимое той или иной html страницы.

Например, клиент отправляет запрос по адресу 192.168.10.1:8080/auto, в ответ получает содержимое страницы auto.html, если клиент запрашивает адрес 192.168.10.1:8080/hello, то получает содержимое страницы hello.html и так далее.

Создание хранилища

В отличие от предыдущего примера, в котором использовалась всего одна html страница, хранить содержимое нескольких html страниц в коде не самое лучшее решение, поэтому для начала создадим небольшое хранилище, куда поместим все наши сайты.

Переходим в окно Solution Explorer и создаём новую папку (Add -> New Folder), например mysite.

new folder

Добавление html страниц

Добавим в папку mysite несколько html страниц.

1. Нажимаем правую кнопку мыши на созданной папке и выбираем пункт Add -> New Item

new item

2. Переходим в раздел web и выбираем шаблон Html Page.

html page

3. Изменим имя файла, например на auto.html и нажмём на кнопку Add.

В результате в папке mysite появится файл auto.html.

solution explorer

По умолчанию в добавленном файле уже содержится набор html тегов описывающих каркас пустой html страницы. Если вы хотите внести какие-то изменения, то просто дважды щелкните по нему левой кнопкой мышки.

теги

Таким же способом можно добавить ещё несколько html страниц.

Обработка запросов

Хранилище создано, и теперь можно перейти к написанию кода.

Для начала добавим адреса, которые будет слушать, и обрабатывать наш веб-сервер. Список адресов можно поместить, например в массив:

С помощью цикла foreach добавим адреса в коллекцию Prefixes.

В данном примере все адреса имеют одинаковый номер порта, поэтому вместо того, чтобы создавать массив, можно просто указать серверу, чтобы он слушал и принимал все запросы на порт 8080.

Теперь нам нужно определить, какую страницу хочет получить клиент и вернуть ему её в качестве ответа сервера.

Адрес запрашиваемого ресурса можно получить с помощью свойства RawUrl объекта request.

С помощью метода ReadAllBytes считываем содержимое html файла и преобразуем его в массив байт для последующей отправки клиенту.

Если клиент запрашивает не существующую страницу, то ему будет возвращаться содержимое страницы default.html, которую необходимо вручную создать и добавить в хранилище сайтов.

Что получилось в итоге:

Запуск веб-сервера

Запускаем веб-сервер после чего на клиенте, в адресной строке веб-браузера, вводим адрес ресурса, например:

браузер

Также можно ввести адрес несуществующей страницы и убедится, что сервер возвращает клиенту содержимое страницы default.html.

Читайте также:

Похожие темы

Pentesting web-сервера Всем привет! В этой статье я уделю внимание WEB-серверам и протоколу HTTP. HTTP— протокол прикладного уровня основной задачей, которого является о...
Как развернуть у себя на десктопе полноценный веб ... Хочу показать в этой статье как очень легко и без особых знаний развернуть у себя на десктопе полноценный веб сервер, для своих нужд. Очень подойдет...
Часть 3. Пишем исходный код программы на языке c#... Часть 3. Пишем исходный код программы на языке c# Подготовительные работы окончены, переходим к написанию исходного кода нашей программы на языке c#....
Как можно быстро получить все буквы русского или а... Как можно быстро получить все буквы русского или английского алфавита? Просматривая исходник одной из программ, увидел следующую строку: Как видно...
c# Функция автозавершения для textbox... Автозавершение при вводе данных в textbox В этой небольшой статье хочу показать на простом примере, как добавить возможность автозавершения при вводе...