Спонсор публикаций BlackDiver

Обучение тестированию на проникновение  - Обучению тестированию на проникновение от BlackDiver. Базовый курс

Как создать веб-сервер с помощью класса HttpListener?

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

Дано: два компьютера:  (192.168.10.10) и  (192.168.10.1).

Компьютер “A” (клиент) – отправляет запросы веб-серверу с помощью веб-браузера (хром, опера и так далее).

Компьютер “Б” — это веб-сервер, который принимает и обрабатывает входящие запросы, отправленные методами: GET и POST, а так же динамически создаёт html страницу для отправки клиенту в качестве ответа.

Создание веб-сервера

Для начала создадим новый проект типа Windows Forms Application, после чего добавим на форму элемент управления Button (кнопку).

Для создания веб-сервера воспользуемся классом HttpListener из пространства имён System.Net

Метод StartServer — запускает сервер, принимает входящие запросы, отправленные методами: GET или POST на uri адрес: http://192.168.10.1:8080/say. А также создаёт динамическую страницу, которая содержит форму с текстовым полем и кнопкой типа Submit для отправки клиенту.

Для вызова метода Start требуются права администратора (запустить Visual Studio от имени Администратора), иначе возникает ошибка Отказано в доступе”.

Метод ShowRequestData обрабатывает http запросы, отправленные методом POST, и выводит введённое имя. Если клиент отправляет слово stop, то веб-сервер приостанавливает свою работу. Если вместо метода Stop вызвать метод Close, то сервер полностью завершит свою работу.

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

1. Запускаем веб-сервер, нажав на кнопку Запустить.

кнопка



2. На клиенте открывает любой доступный веб-браузер, и в адресной строке вводим адрес нужного нам ресурса, в результате появиться форма. Вводим имя и нажимаем на кнопку.

веб-браузер

3. На сервере появляется сообщение, которое содержит введенное имя.

messagebox

4. Для остановки сервера отправляем слово stop (можно заменить любым другим).

текстовое поле

форма

Порт в строке uri является необязательным, если он не указывается, то (по умолчанию) будет использоваться порт 80.

Если указывается порт, то ip адрес или имя хоста (в строке uri) можно не указывать, а заменить его знаком плюс (+).

Теперь на клиенте достаточно ввести только имя или ip адрес сервера и номер порта.

Как вернуть значение клиенту?

1. Создадим поле name типа string, в котором будет храниться возвращаемое пользователю значение.

2. В методе ShowRequestData вместо либо после вызова метода MessageBox.Show присвоим переменной name значение, которое было передано клиентом.

3. В методе StartServer добавим возможность возврата полученного значения.

поле формы

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


Внимание конкурс! на форуме codeby

Наш конкурс  - это возможность получить денежные призы, премиум доступ на форуме и скидку в нашем маркетплейсе

Похожие темы

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