Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 22743|Yanıt: 0

[Kaynak] Basit bir Http hizmeti HttpListener ile uygulayın

[Bağlantıyı kopyala]
Yayınlandı 2.12.2015 16:56:31 | | |
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.





Önceki:AJAX'ın ASP.NET MVC veya WebAPI hizmetlerine çapraz alan çağrıları için sorunlar ve çözümler
Önümüzdeki:3 Aralık 2015'te web sitesi resmen &quot;Code Farmer Network&quot; olarak yeniden adlandırıldı ve bu nedenle bilgilendirildi!
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com