Как создать веб-сервер с помощью класса 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 добавим возможность возврата полученного значения.

поле формы

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

Похожие темы

c# Как удалить колонку в DataGridView?... Удаление колонки в DataGridView В этой статье мы рассмотрим, как удалить колонку в элементе DataGridView с помощью языка c# Создадим новый проект ...
Реализация игры Жизнь на С++ и OpenMP... Задание Реализовать компьютерную реализацию классического варианта игры «Жизнь». С использование средств OpenMP. Классический вариант игры «...
Создание приложения на языке c# в программе Visual... Создание первого приложения на языке c# в программе Visual Studio В первой статье рассмотрим, с чего начинается создание любого приложения в программ...
Атрибуты XML файла Атрибуты XML файла В прошлой статье Вы узнали, как работать с элементами и узлами XML файла. В этой статье Вы узнаете, что такое атрибуты, а так же р...
Как удалить раздел реестра, используя язык c#... Как удалить раздел реестра Windows, используя язык c# В этой статье продолжаем работать с реестром Windows программным путем, сегодня Вы узнаете, как...