See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17368|Vastuse: 0

[Allikas] HttpListener-põhine veebiserver

[Kopeeri link]
Postitatud 21.12.2015 11:00:26 | | |

Et kuulajaid veelgi lihtsustada HTTP protokolli jaoks, . .NET pakub HttpListener klassi nimeruumis System.Net. Selle objektiga kaasneb . .NET pakub rea seotud objekte, mis kapseldavad HTTP-töötlustööd. Pane tähele, et see klass kasutab Http.sys süsteemikomponente töö tegemiseks, seega saab seda kasutada ainult Windows XPSP2 või Server 2003 või uuematel operatsioonisüsteemidel.

HttpListener klass lihtsustab kuulamistoimingut veelgi ning kuulamistöö alustamiseks tuleb esitada ainult kuulamisaadress, pordi number ja virtuaalne tee stringimeetodi kaudu.

Pärast kuulamise alustamist blokeerib GetContext meetod lõime, kui kliendi päring saabub, tagastab HttpListener HttpListenerContext objekti üldise proksina kliendipäringute töötlemiseks, proksiobjekti Request omaduse kaudu saame objekti tüübiga HttpListenerRequest, mis esindab päringuparameetreid, see objekt objektistab enamiku päringuparameetritest, seega , saame päringuparameetrid läbi mitmete omaduste, mida see pakub. Näiteks HttpListenerRequest HttpMethod omadus annab soovitud meetoditüübi. Proxy Response atribuudi kaudu saame vastusetöötlusobjekti tüübiga HttpListenerResponse, mis kapseldab vastuse andmed ja toimingud, lihtsustades oluliselt vastuse programmeerimiskoormust, ning tööprotsess on järgmine:
//检查系统是否支持
kui (! httpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "HttpListeneri kasutamiseks pead olema Windows XP SP2 või Server 2003 või uuem!" );
}
Pane tähele, et eesliide peab lõppema / ettepoole kaldkriipsuga
string[] eesliited = uus string[] { "http://localhost:49152/" };
Loo kuulaja.
HttpListener kuulaja = uus HttpListener();
Lisa monitori eesliide.
foreach (string s eesliidetes)
{
    kuulaja. Prefiks.Add(s);
}
Alusta kuulamist
kuulaja. Start();
Console.WriteLine("kuulamine...");
samal ajal (tõene)
{
    Märkus: GetContext meetod blokeerib lõime kuni päringu saabumiseni
    HttpListenerContext = kuulaja. GetContext();
    Hangi taotlusobjekt
    HttpListenerRequest request = kontekst. Taotlus;
    Console.WriteLine("{0} {1} HTTP/1.1", request. HttpMethod, taotlus. RawUrl);
    Console.WriteLine("Accept: {0}", string. Liitu(",", taotlus. AcceptTypes));
    Console.WriteLine("Aktsepteerimiskeel: {0}",
        Nöör. Liitu(",", taotlus. UserLanguages));
    Console.WriteLine("User-Agent: {0}", päring. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", taotlus. päised["Accept-Encoding"]);
    Console.WriteLine("Ühendus: {0}",
        Palve. KeepAliv e ? "Hoia elus" : "lähedal");
    Console.WriteLine("Host: {0}", request. UserHostName);
    Console.WriteLine("Pragma: {0}", request. Päised ["Pragma"]);
    Hangi vastuse sihtmärk
    HttpListenerResponse vastus = kontekst. Vastus;
    Koosta vastuse sisu
    string responseString
        = @"<html>
                <head><title>HttpListener serverist</title></head>
                <body><h1>Tere maailm.</h1></body>
            ";</html>
    Määra vastuse päise sisu, pikkus, kodeerimine
    vastus. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    vastus. ContentType = "tekst/html; charset=UTF-8";
    Väljundvastused
    System.IO.Stream väljund = vastus. OutputStream;
    System.IO.StreamWriter writer = uus System.IO.StreamWriter(väljund);
    kirjanik. Write(responseString);
    Väljundvoog tuleb välja lülitada
    kirjanik. Close();
    if (Console.KeyAvailable)
        paus;
}
Sulge server
kuulaja. Stop();

HttpListeneri kasutamisel muutuvad sageli kasutatavad päringu- ja vastusparameetrid objekti omadusteks, mis vähendab oluliselt programmeerimiskoormust. Siiski tuleb enamik parameetreid endiselt kasutada Headers indekseerija kaudu, nagu ka Accept-Encoding päringu parameetril ülaltoodud näites, millele me ei pääse otse omaduste kaudu ligi.




Eelmine:CSS-failidele ja js-failidele järgneb küsimärk
Järgmine:Päev on alanud!! Tulge, kõik
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com