Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Создание веб-сервера на языке 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 страницы. Если вы хотите внести какие-то изменения, то просто дважды щелкните по нему левой кнопкой мышки.


Codeby Security School от Сodeby

Мы запустили свою онлайн школу по информационной безопасности. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного в курсе Paranoid


теги

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

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

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

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

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

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

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

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

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

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

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

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

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

браузер

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

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


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

Как развернуть у себя на десктопе полноценный веб ... Хочу показать в этой статье как очень легко и без особых знаний развернуть у себя на десктопе полноценный веб сервер, для своих нужд. Очень подойдет...
Как заполнить поля HTML формы?... Программное заполнение полей html формы Сегодня хочу показать на просто примере, как заполнить поля html формы с помощью приложения написанного на яз...
Деление чисел на ноль в языке c#... Деление на ноль типов с плавающей точкой в языке c# В очередной раз, наткнувшись на видеоурок, в котором создается калькулятор, я обратил внимание на...
c# Функция автозавершения для textbox... Автозавершение при вводе данных в textbox В этой небольшой статье хочу показать на простом примере, как добавить возможность автозавершения при вводе...
Создание раздела реестра испльзуя язык c#... Создание раздела реестра на языке c# От теории переходим к практике, для начала научимся открывать и создавать разделы реестра Создание раздела реес...