HttpListener предоставляет простой, программируемый и управляемый слушатель протокола HTTP. Это позволяет легко предоставлять некоторые HTTP-сервисы без необходимости запускать крупную программу вроде IIS.
Примечание: этот класс доступен только на компьютерах с операционными системами Windows XP SP2 или Windows Server 2003.
Общие шаги использования HTTP-сервисов следующие:
Создайте объект HTTP-слушателя и инициализируйте его Добавьте префикс URI, который нужно слушать Начните слушать запросы клиентов Обработка HTTP-запросов от клиентов Отключите HTTP-слушатель Шаги 3 и 4 могут быть циклично выполнены для предоставления услуг, запрошенных несколькими клиентами.
Создать объект-слушатель HTTP
Чтобы создать объект HTTP-слушателя, достаточно создать новый объект HttpListener.
Слушатель HttpListener = новый HttpListener();
Инициализация требует следующих двух шагов
Вы можете добавить диапазон URL для прослушивания в слушателе. Префиксы с помощью следующей функции: слушателя. Префиксы. Add(prefix) //prefix должен заканчиваться на '/' Звоните слушателю. Start() привязывает порт и начинает слушать нужды клиента. Принимать HTTP-запросы
В .NET 2.0 доступ к объектам запроса и ответа, используемым классом HttpListener, предоставляется через объект HttpListenerContext.
Самый простой способ получить HttpListenerContext следующий:
HttpListenerContext context = слушатель. GetContext();
Этот метод блокирует функцию вызова до получения клиентского запроса, и если вы хотите повысить скорость отклика, можно использовать асинхронный метод слушателя. BeginGetContext() для получения объекта HttpListenerContext.
Обработка HTTP-запросов
После получения HttpListenerContext вы можете получить объект, представляющий запрос клиента, через атрибут Запрос, и объект, представляющий ответ, который HttpListener отправит клиенту через атрибут Response.
HttpListenerRequest request = контекст. Запрос; Ответ HttpListenerResponse = контекст. Response;
Объект HttpListenerRequest здесь похож на использование Request and Response в Asp и объекте HttpListenerResponse, поэтому я не буду много рассказывать, для конкретного использования вы можете посмотреть пример ниже.
Отключите HTTP-слушатель
Позвонив слушателю. Stop() отключает слушатель и освобождает нужные ресурсы
Пример кода:
используя System; с использованием System.Collections.Generic; с использованием System.Text;
используя System.Net;
пространство имён ConsoleApplication1
{ Программа класса { static void Main(string[] args) { Слушатель HttpListener = новый HttpListener(); слушателя. Префиксы.Add("http://localhost/"); Добавьте диапазон URL, которые нужно прослушать слушателя. Start(); Начните слушать порт и получать запросы от клиентов Console.WriteLine («Прослушивание...»);
Блокирует основную функцию до получения запроса клиента HttpListenerContext context = слушатель. GetContext(); HttpListenerRequest request = контекст. Запрос; Ответ HttpListenerResponse = контекст. Response;
ответ строкиСтрока = строка. Format(<HTML><BODY>" {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Выводите соответствующую информацию клиенту. Ответ. ContentLength64 = буфер. Длина; System.IO.Stream output = ответ. OutputStream; выход. Write(buffer, 0, buffer. Длина); Закройте выходной поток, чтобы освободить соответствующие ресурсы выход. Close();
слушателя. Стоп(); Выключите HttpListener } }
}
Программа относительно проста: сначала создаётся HTTP-слушатель для реализации сервиса домена «http://localhost/time/», при получении удалёного запроса она преобразует текущее время в выходную строку для клиента, а затем закрывает слушатель.
|