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


Наш канал в telegram канал codeby

Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде !  Подробнее ...

теги

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

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

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

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

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

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

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

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

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

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

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

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

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

браузер

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

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


Наш канал в telegram канал codeby

Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде !  Подробнее ...

Похожие темы

Как работать с классом WebBrowser?... Пример работы с классом WebBrowser В комментариях многие просят показать или рассказать, как работать с классом webBrowser, а не с одноимённым элемен...
Как можно быстро получить все буквы русского или а... Как можно быстро получить все буквы русского или английского алфавита? Просматривая исходник одной из программ, увидел следующую строку: Как видно...
Заполнение TreeView данными из XML файла... c# Работа с TreeView. Часть 2 Продолжаем работать с элементом управления TreeView и сегодня рассмотрим следующие моменты: создание и добавления узлов...
c# Шпаргалка для работы с папками и подпапками... c# Шпаргалка для работы с папками и подпапками Перед началом работы подключите пространство имён System.IO Это можно выполнить как вручную, добави...
Как скопировать файл с помощью языка c#?... C# Как скопировать файл? Из этой статьи Вы узнаете, как скопировать файл, используя язык c#. Но, для начала хотелось бы сказать, что, не смотря на то...