Требуются разработчики и тестеры для проекта codebyOS

Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

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

кнопка


Набираем команду codeby webinar

Набираем команду для организации и проведения вебинаров Подробнее ...

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

веб-браузер

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

messagebox

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

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

форма

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

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

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

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

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

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

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

поле формы

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


Получи 30.000 рублей от codeby

Мы запустили конкурс для авторов, в котором может принять участие любой желающий. За первое место - 7500 руб., второе - 5000, третье 2500. Главный приз 30.000 рублей вы получаете независимо от места в конкурсе. Подробнее на форуме codeby ...

Похожие темы

c# Как выделить элемент на странице WebBrowser при... Выделение элемента при наведении мышкой в WebBrowser Из этой статьи вы узнаете, как выделить элемент в WebBrowser при наведении мышкой. Как обычно...
Матричный метод решения СЛАУ. Распараллеливание с ... Цель работы: приобретение навыков разработки параллельных программ с использованием OpenMP. Задание: Разработать последовательную и параллель...
Visual studio Insert snippet Visual studio Insert snippet Сниппеты — это фрагменты или заготовки кода, которые позволяют сократить количество набираемого кода вручную. В...
Атрибуты XML файла Атрибуты XML файла В прошлой статье Вы узнали, как работать с элементами и узлами XML файла. В этой статье Вы узнаете, что такое атрибуты, а так же р...
Как добавить dll файл в проект Visual Studio... Как добавить dll файл в проект Небольшое практическое руководство о том, как подключить dll файл в проект программы Visual Studio 1. Перейдите в о...