Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 17368|Svare: 0

[Kilde] HttpListener-basert webserver

[Kopier lenke]
Publisert på 21.12.2015 11:00:26 | | |

For å forenkle lyttere for HTTP-protokollen ytterligere, . .NET tilbyr HttpListener-klassen i navnerommet System.Net. Som følger med dette objektet, . .NET tilbyr en serie relaterte objekter som kapsler inn HTTP-prosesseringsarbeid. Merk at denne klassen bruker Http.sys systemkomponenter for å få jobben gjort, så den kan kun brukes på Windows XPSP2 eller Server 2003 eller nyere operativsystemer.

HttpListener-klassen forenkler lytteoperasjonen ytterligere, og trenger bare å oppgi lytteadressen, portnummeret og den virtuelle stien gjennom strengmetoden for å starte lyttearbeidet.

Etter å ha startet lytting, vil GetContext-metoden blokkere tråden, når klientens forespørsel kommer, returnerer HttpListener et HttpListenerContext-objekt som generell proxy for behandling av klientforespørsler, gjennom Request-egenskapen til proxy-objektet kan vi få et objekt av typen HttpListenerRequest som representerer forespørselsparameterne, dette objektet objektiviserer de fleste forespørselsparameterne, så , kan vi hente forespørselsparametrene gjennom en serie egenskaper den gir. For eksempel gir HttpMethod-egenskapen til HttpListenerRequest metodetypen som forespørres. Gjennom Response-attributtet til proxyen kan vi få et responsbehandlingsobjekt av typen HttpListenerResponse, som kapsler inn dataene og operasjonene til svaret, noe som i stor grad forenkler programmeringsarbeidsmengden til svaret, og arbeidsprosessen er som følger:
//检查系统是否支持
hvis (! HttpListener.IsSupported)
{
    kast nytt System.InvalidOperationException(
        "For å bruke HttpListener må du være på Windows XP SP2 eller Server 2003 eller nyere!" );
}
Merk at prefikset må ende med en / fremover-skråstrek
streng[] prefikser = ny streng[] { "http://localhost:49152/" };
Lag en lytter.
HttpListener listener = ny HttpListener();
Legg til prefikset til skjermen.
foreach (streng s i prefikser)
{
    lytter. Prefikser.Add(s);
}
Begynn å lytte
lytter. Start();
Console.WriteLine(" lytter...");
mens (Sant)
{
    Merk: GetContext-metoden blokkerer tråden til forespørselen kommer
    HttpListenerContext context = listener. GetContext();
    Få forespørselsobjektet
    HttpListenerRequest-forespørsel = kontekst. Forespørsel;
    Console.WriteLine("{0} {1} HTTP/1.1", forespørsel. HttpMethod, forespørsel. RawUrl);
    Console.WriteLine("Accept: {0}", streng. Bli med(",", forespørsel. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Streng. Bli med(",", forespørsel. UserLanguages));
    Console.WriteLine("User-Agent: {0}", forespørsel. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", forespørsel. headers["Accept-Encodering"]);
    Console.WriteLine("Connection: {0}",
        forespørsel. Beholde livet ? "Keep-Alive": "nær");
    Console.WriteLine("Host: {0}", forespørsel. UserHostName);
    Console.WriteLine("Pragma: {0}", forespørsel. overskrifter["Pragma"]);
    Få responsmålet
    HttpListenerResponse svar = kontekst. Respons;
    Konstruer svarinnholdet
    strengresponsStreng
        = @"<html>
                <head><title>Fra HttpListener-serveren</title></head>
                <body><h1>hallo verden.</h1></body>
            ";</html>
    Sett innholdet, lengden, kodingen i svarheaderen
    respons. InnholdLengde64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    respons. ContentType = "text/html; charset=UTF-8";
    Utdataresponser
    System.IO.Stream-utgang = respons. OutputStream;
    System.IO.StreamWriter writer = ny System.IO.StreamWriter (output);
    forfatter. Write(responseString);
    Utgangsstrømmen må slås av
    forfatter. Close();
    hvis (Console.KeyAvailable)
        pause;
}
Steng serveren
lytter. Stop();

Når man bruker HttpListener, blir vanlige forespørsels- og svarparametere objektegenskaper, noe som i stor grad reduserer programmeringsarbeidsmengden. De fleste parameterne må imidlertid fortsatt nås gjennom Headers-indekseren, akkurat som Accept-Encoding-forespørselsparameteren i eksempelet over, som vi ikke kan få tilgang til direkte gjennom egenskapene.




Foregående:CSS-filer og js-filer etterfølges av et spørsmålstegn
Neste:Dagen har begynt!! Kom igjen, alle sammen
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com