Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 17368|Odgovoriti: 0

[Vir] Spletni strežnik na osnovi HttpListener

[Kopiraj povezavo]
Objavljeno na 21. 12. 2015 11:00:26 | | |

Za dodatno poenostavitev poslušalcev za HTTP protokol, . .NET zagotavlja razred HttpListener v imenskem prostoru System.Net. Ob tem objektu je . .NET ponuja vrsto povezanih objektov, ki kapsulirajo HTTP procesno delo. Upoštevajte, da ta razred uporablja Http.sys sistemske komponente za opravljanje naloge, zato ga je mogoče uporabljati le na operacijskih sistemih Windows XPSP2 ali Server 2003 ali novejših.

Razred HttpListener še dodatno poenostavi poslušanje in mora skozi metodo poslušanja zagotoviti le naslov poslušanja, številko vrat in virtualno pot skozi metodo nizov, da se začne poslušanje.

Po začetku poslušanja bo metoda GetContext blokirala nit, ko prispe zahtevek odjemalca, HttpListener vrne objekt HttpListenerContext kot splošni proxy za obdelavo zahtevkov odjemalca; preko lastnosti Request objekta proxy lahko dobimo objekt tipa HttpListenerRequest, ki predstavlja parametre zahteve, ta objekt objektivizira večino parametrov zahtev, tako da , parametre zahteve lahko dobimo preko niza lastnosti, ki jih zagotavlja. Na primer, lastnost HttpMethod v HttpListenerRequest zagotavlja zahtevani tip metode. S pomočjo atributa Odziv proxyja lahko dobimo objekt za obdelavo odziva tipa HttpListenerResponse, ki zajema podatke in operacije odziva, kar močno poenostavi programsko obremenitev odziva, delovni proces pa je naslednji:
//检查系统是否支持
če (! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "Za uporabo HttpListenerja morate biti na Windows XP SP2 ali Server 2003 ali novejši!" );
}
Upoštevajte, da se mora predpona končati z / naprej
predpone niz[] = nov niz[] { "http://localhost:49152/" };
Ustvarite poslušalca.
HttpListener listener = novi HttpListener();
Dodaj predpono monitorja.
foreach (niz s v predponah)
{
    poslušalec. Predpone.Add(s);
}
Začnite poslušati
poslušalec. Start();
Console.WriteLine(" poslušanje...");
medtem ko (res)
{
    Opomba: Metoda GetContext bo blokirala nit, dokler zahteva ne prispe
    HttpListenerContext context = poslušalec. GetContext();
    Pridobite objekt zahteve
    HttpListenerRequest request = kontekst. Prošnja;
    Console.WriteLine("{0} {1} HTTP/1.1", request. HttpMethod, zahteva. RawUrl);
    Console.WriteLine("Sprejmi: {0}"), string. Pridruži se (",", zahteva. AcceptTypes));
    Console.WriteLine ("Accept-Language: {0}",
        vrvico. Pridruži se (",", zahteva. UserLanguages));
    Console.WriteLine("User-Agent: {0}", zahteva. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", zahteva. Glave["Accept-Encoding"]);
    Console.WriteLine ("Povezava: {0}",
        prošnjo. Keep Livev e ? "Keep-Alive" : "blizu");
    Console.WriteLine("Gostitelj: {0}", zahteva. UserHostName);
    Console.WriteLine("Pragma: {0}"), zahteva. Naslovi["Pragma"]);
    Pridobite ciljno rešitev
    HttpListenerResponse response = kontekst. Odgovor;
    Sestavi vsebino odziva
    odziv stringaString
        = @"<html>
                <head><title>Iz HttpListener strežnika</title></head>
                <body><h1>pozdravljeni vsi skupaj.</h1></body>
            ";</html>
    Nastavite vsebino glave odziva, dolžino, kodiranje
    Odgovor. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    Odgovor. ContentType = "besedilo/html; charset=UTF-8";
    Izhodni odzivi
    System.IO.Stream output = odziv. OutputStream;
    System.IO.StreamWriter writer = novi System.IO.StreamWriter(output);
    pisatelj. Write(responseString);
    Izhodni tok je treba izklopiti
    pisatelj. Close();
    if (Console.KeyAvailable)
        premor;
}
Ugasnite strežnik
poslušalec. Stop();

Pri uporabi HttpListenerja postanejo pogosto uporabljeni parametri zahtev in odgovora objektni lastnosti, kar močno zmanjša programsko obremenitev. Vendar pa je večino parametrov še vedno treba dostopati prek indeksatorja Headers, podobno kot parameter zahteve Accept-Encoding v zgornjem primeru, do katerega ne moremo neposredno dostopati preko lastnosti.




Prejšnji:CSS datotekam in js datotekam sledi vprašaj
Naslednji:Dan se je začel!! Dajmo, vsi
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com