HttpListener предоставя прост, програмируем и управляем HTTP протоколен слушател. Това ви позволява лесно да предоставяте някои Http услуги, без да се налага да стартирате голяма програма като IIS.
Забележка: Този клас е достъпен само на компютри с операционни системи Windows XP SP2 или Windows Server 2003.
Общите стъпки за използване на Http услуги са следните:
Създайте HTTP слушателен обект и го инициализирайте Добавете префикса URI, който трябва да се слуша Започнете да слушате за заявки от клиенти Обработка на http заявки от клиенти Изключете HTTP слушателя Стъпки 3 и 4 могат да бъдат циклирани, за да предоставят услуги, поискани от множество клиенти.
Създаване на HTTP слушателен обект
За да създадете HTTP слушател обект, трябва само да създадете нов обект HttpListener.
HttpListener слушател = нов HttpListener();
Инициализацията изисква следните две стъпки
Можете да добавите диапазона на URL адресите, който да слушате в слушател. Префикси, като използвате следната функция: слушател. Префикси. Add(префикс) //префикс трябва да завършва на '/' Обади се на слушателя. Start(), за да свържеш порта и започни да слушаш нуждите на клиента. Приемане на HTTP заявки
В .NET 2.0 достъпът до обектите за заявка и отговор, използвани от класа HttpListener, се осигурява чрез обекта HttpListenerContext.
Най-лесният начин да получите HttpListenerContext е следният:
HttpListenerContext context = слушател. GetContext();
Този метод ще блокира функцията за повикване, докато не получи клиентска заявка, а ако искате да подобрите скоростта на отговор, можете да използвате слушателя на асинхронния метод. BeginGetContext(), за да получите обекта HttpListenerContext.
Обработка на HTTP заявки
След като получите HttpListenerContext, можете да получите обекта, който представлява заявката на клиента чрез атрибута Request, и обекта, който представлява отговора, който HttpListener ще изпрати на клиента чрез атрибута Response.
HttpListenerRequest request = контекст. Молба; Отговор на HttpListenerResponse = контекст. Response;
Обектът HttpListenerRequest тук е подобен на използването на Request и Response в Asp и обекта HttpListenerResponse, така че няма да казвам много тук, можете да видите примера по-долу за конкретна употреба.
Изключете HTTP слушателя
Като се обадиш на слушателя. Stop() функцията изключва слушателя и освобождава съответните ресурси
Пример за код:
използвайки System; използвайки System.Collections.Generic; използвайки System.Text;
използвайки System.Net;
namespace 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/", когато получи отдалечена заявка, тя преобразува текущото време в изход на низ към клиента и след това затваря слушателя.
|