HttpListener, basit, programlanabilir ve kontrol edilebilir bir HTTP protokol dinleyicisi sağlar. IIS gibi büyük bir hizmet programı başlatmanıza gerek kalmadan bazı Http hizmetlerini kolayca sunmanızı sağlar.
Not: Bu sınıf yalnızca Windows XP SP2 veya Windows Server 2003 işletim sistemleri çalıştıran bilgisayarlarda mevcuttur.
Http servislerini kullanmanın genel adımları şunlardır:
Bir HTTP dinleyici nesnesi oluşturun ve başlatın Dinlenmesi gereken URI önekini ekleyin Müşterilerden gelen talepleri dinlemeye başlayın İstemcilerden gelen Http isteklerini yönetin HTTP dinleyicisini kapatın 3. ve 4. adımlar, birden fazla müşteri tarafından talep edilen hizmetleri sağlamak üzere döngüye dönüştürülebilir.
Bir HTTP dinleyici nesnesi oluşturun
Bir HTTP dinleyici nesnesi oluşturmak için sadece yeni bir HttpListener nesnesi oluşturmanız yeterlidir.
HttpListener dinleyici = yeni HttpListener();
Başlatma için aşağıdaki iki adım gereklidir
Listener.E-Eşimde dinlemek için URL aralığını ekleyebilirsiniz. Aşağıdaki fonksiyonu kullanarak önekler: dinleyici. Prefixes.Add(prefix) //prefix '/' ile bitmelidir Dinleyiciyi ara. Start() ile portu bağlayın ve istemcinin ihtiyaçlarını dinlemeye başlayın. HTTP isteklerini kabul et
.net 2.0'da, HttpListener sınıfı tarafından kullanılan istek ve yanıt nesnelerine erişim HttpListenerContext nesnesi aracılığıyla sağlanır.
HttpListenerContext'i elde etmenin en kolay yolu şöyledir:
HttpListenerContext Context = dinleyici. GetContext();
Bu yöntem, istemci talebi alınana kadar çağrı fonksiyonunu engeller ve yanıt hızını artırmak istiyorsanız, asenkron metod dinleyicisini kullanabilirsiniz. BeginGetContext() ile HttpListenerContext nesnesini elde edersiniz.
HTTP isteklerini işle
HttpListenerContext'i edindikten sonra, istemcinin talebini temsil eden nesneyi Request özniteliği üzerinden ve HttpListener'ın Response özniteliği aracılığıyla istemciye göndereceği yanıtı temsil eden nesneyi elde edebilirsiniz.
HttpListenerRequest request = bağlam. Talep; HttpListenerResponse yanıtı = bağlam. Yanıt;
Buradaki HttpListenerRequest nesnesi, Asp ve HttpListenerResponse nesnesinde Request and Response kullanımına benzer, bu yüzden burada çok fazla bir şey söylemeyeceğim, aşağıda özel kullanım için örneği görebilirsiniz.
HTTP dinleyicisini kapatın
Dinleyiciyi arayarak. Stop() fonksiyonu dinleyiciyi kapatıp ilgili kaynakları serbest bırakmak için
Kod örneği:
System kullanmak; System.Collections.Generic kullanılarak; System.Text kullanarak;
System.Net kullanmak;
isim alanı ConsoleApplication1
{ Sınıf Programı { statik boşluk Ana (dize[] args) { HttpListener dinleyici = yeni HttpListener(); dinleyici. Ön ekler.Add("http://localhost/"); Dinlenmesi gereken URL aralığını ekleyin dinleyici. Start(); Port üzerinde dinlemeye başlayın ve istemci istekleri alın Console.WriteLine ("Dinlemek...");
Ana fonksiyonu engeller, bir istemci talebi alınana kadar HttpListenerContext Context = dinleyici. GetContext(); HttpListenerRequest request = bağlam. Talep; HttpListenerResponse yanıtı = bağlam. Yanıt;
string responseString = string. format(<HTML><BODY>" {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Karşılık gelen bilgileri istemciye gönderin. Yanıt. ContentLength64 = buffer. Uzunluk; System.IO.Stream çıktısı = yanıt. OutputStream; çıktı. Write(buffer, 0, buffer. Uzunluk); Çıktı akışını kapatarak ilgili kaynakları serbest bırakın çıktı. Close();
dinleyici. Dur(); HttpListener'ı kapatın } }
}
Program nispeten basittir, önce "http://localhost/time/" alanının hizmetini uygulamak için bir HTTP dinleyicisi oluşturur, uzaktan bir talep aldığında mevcut zamanı istemci için bir diz çıktısına dönüştürür ve ardından dinleyiciyi kapatır.
|