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