"HttpListener" suteikia paprastą, programuojamą ir valdomą HTTP protokolo klausytuvą. Tai leidžia lengvai teikti kai kurias Http paslaugas nepaleidžiant didelės paslaugų programos, pvz., IIS.
Pastaba: Ši klasė galima tik kompiuteriuose, kuriuose veikia Windows XP SP2 arba Windows Server 2003 operacinės sistemos.
Bendrieji HTTP paslaugų naudojimo veiksmai yra šie:
HTTP klausytuvo objekto kūrimas ir inicijavimas Pridėkite URI priešdėlį, kurio reikia klausytis Pradėkite klausytis klientų užklausų Klientų Http užklausų tvarkymas HTTP klausytuvo išjungimas 3 ir 4 veiksmus galima atlikti cikliškai, kad būtų teikiamos paslaugos, kurių prašo keli klientai.
HTTP klausytuvo objekto kūrimas
Norėdami sukurti HTTP klausytuvo objektą, jums tereikia sukurti naują HttpListener objektą.
HttpListener klausytojas = naujas HttpListener();
Inicijavimas reikalauja šių dviejų veiksmų
Galite įtraukti klausymosi URL diapazoną klausytojuje.Prefixes naudodami šią funkciją: klausytojas. Prefixes.Add(priešdėlis) //priešdėlis turi baigtis '/' Skambinkite klausytojui. Start(), kad susietumėte prievadą ir pradėtumėte klausytis kliento poreikių. Priimti HTTP užklausas
.net 2.0 prieiga prie užklausos ir atsakymo objektų, kuriuos naudoja HttpListener klasė, suteikiama per HttpListenerContext objektą.
Lengviausias būdas gauti "HttpListenerContext" yra toks:
HttpListenerContext context = klausytojas. GetContext();
Šis metodas blokuos skambučio funkciją, kol bus gauta kliento užklausa, o jei norite pagerinti atsakymo greitį, galite naudoti asinchroninio metodo klausytuvą. BeginGetContext(), kad gautumėte objektą HttpListenerContext.
HTTP užklausų tvarkymas
Gavę HttpListenerContext, galite gauti objektą, kuris atspindi kliento užklausą naudodami atributą Request, ir objektą, kuris nurodo atsakymą, kurį HttpListener siųs klientui per atributą Response.
HttpListenerRequest užklausa = kontekstas. Prašymas; HttpListenerResponse atsakymas = kontekstas. Atsakymas;
HttpListenerRequest objektas čia yra panašus į užklausos ir atsakymo naudojimą Asp ir HttpListenerResponse objekte, todėl čia daug nepasakysiu, galite pamatyti žemiau pateiktą pavyzdį konkrečiam naudojimui.
HTTP klausytuvo išjungimas
Paskambinus klausytojui. Stop() funkcija, skirta išjungti klausytoją ir atlaisvinti atitinkamus išteklius
Kodo pavyzdys:
naudojantis Sistema; naudojant System.Collections.Generic; naudojant System.Text;
naudojant System.Net;
vardų sritis ConsoleApplication1
{ klasės programa { static void Main(string[] args) { HttpListener klausytojas = naujas HttpListener(); klausytojas. Prefixes.Add("http://localhost/"); Pridėkite URL, kurių reikia klausytis, diapazoną klausytojas. Pradžia(); Pradėkite klausytis prievade ir gaukite klientų užklausas Console.WriteLine("Klausymas...");
Blokuoja pagrindinę funkciją, kol gaunama kliento užklausa HttpListenerContext context = klausytojas. GetContext(); HttpListenerRequest užklausa = kontekstas. Prašymas; HttpListenerResponse atsakymas = kontekstas. Atsakymas;
string responseString = eilutė. Format("<HTML><BODY> {0}</BODY></HTML>", DateTime.Now); byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); Išveskite atitinkamą informaciją klientui. atsakymas. ContentLength64 = buferis. Ilgis; System.IO.Stream išvestis = atsakymas. Išvesties srautas; išvestis. Write(buferis, 0, buferis. ilgis); Uždarykite išvesties srautą, kad atlaisvintumėte atitinkamus išteklius išvestis. Uždaryti ();
klausytojas. Stop(); Išjunkite "HttpListener" } }
}
Programa yra gana paprasta, pirmiausia sukurkite HTTP klausytuvą, kad įgyvendintumėte "http://localhost/time/" domeno paslaugą, kai jis gauna nuotolinę užklausą, jis konvertuoja esamą laiką į eilutės išvestį klientui, o tada uždaro klausytoją.
|