Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 17368|Svar: 0

[Källa] HttpListener-baserad webbserver

[Kopiera länk]
Publicerad på 2015-12-21 11:00:26 | | |

För att ytterligare förenkla lyssnare för HTTP-protokollet, . .NET tillhandahåller HttpListener-klassen i namnrymden System.Net. Med detta objekt följer . .NET tillhandahåller en serie relaterade objekt som kapslar in HTTP-bearbetningsarbete. Observera att denna kurs använder Http.sys systemkomponenter för att utföra jobbet, så den kan endast användas på Windows XPSP2 eller Server 2003 eller senare operativsystem.

HttpListener-klassen förenklar ytterligare lyssningsoperationen och behöver endast ange lyssningsadress, portnummer och virtuell väg genom strängmetoden för att påbörja lyssningsarbetet.

Efter att ha börjat lyssna blockerar GetContext-metoden tråden, när klientens begäran anländer, returnerar HttpListener ett HttpListenerContext-objekt som den allmänna proxyn för att hantera klientförfrågningar, genom Request-egenskapen för proxyobjektet kan vi få ett objekt av typen HttpListenerRequest som representerar begäranarparametrarna, detta objekt objektifierar de flesta begäranparameterna, så , kan vi få begäranparametrarna genom en serie egenskaper den tillhandahåller. Till exempel tillhandahåller egenskapen HttpMethod i HttpListenerRequest den metodtyp som efterfrågas. Genom proxyns attribut Response kan vi erhålla ett svarsbehandlingsobjekt av typen HttpListenerResponse, som kapslar in data och operationer för svaret, vilket avsevärt förenklar programmeringsarbetsbördan för svaret, och arbetsprocessen är följande:
//检查系统是否支持
om (! HttpListener.IsSupported)
{
    kasta nytt System.InvalidOperationException(
        "För att använda HttpListener måste du ha Windows XP SP2 eller Server 2003 eller senare!" );
}
Observera att prefixet måste sluta med ett / framåtriktat snedstreck
sträng[] prefix = ny sträng[] { "http://localhost:49152/" };
Skapa en lyssnare.
HttpListener listener = ny HttpListener();
Lägg till prefixet på skärmen.
foreach (sträng s i prefix)
{
    lyssnare. Prefix. Tillägg(er);
}
Börja lyssna
lyssnare. Start();
Console.WriteLine(" lyssnar...");
medan (sann)
{
    Observera: GetContext-metoden blockerar tråden tills förfrågan anländer
    HttpListenerContext context = lyssnare. GetContext();
    Hämta request-objektet
    HttpListenerRequest-begäran = kontext. Begäran;
    Console.WriteLine("{0} {1} HTTP/1.1", begäran. HttpMethod, begär. RawUrl);
    Console.WriteLine("Accept: {0}", sträng. Join(",", begäran. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Snöre. Join(",", begäran. UserLanguages));
    Console.WriteLine("User-Agent: {0}", begäran. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", begäran. Headers["Accept-Encoding"]);
    Console.WriteLine("Anslutning: {0}",
        begäran. Behålla livet ? "Keep-Alive": "nära");
    Console.WriteLine("Host: {0}", begäran. UserHostName);
    Console.WriteLine("Pragma: {0}", begäran. Rubriker["Pragma"]);
    Fånga responsmålet
    httpListenerResponse svar = kontext. Respons;
    Konstruera svarsinnehållet
    strängresponsSträng
        = @"<html>
                <head><title>Från HttpListener-servern</title></head>
                <body><h1>Hej världen.</h1></body>
            ";</html>
    Ställ in svarshuvudets innehåll, längd, kodning
    svar. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    svar. ContentType = "text/html; charset=UTF-8";
    Utdata svar
    System.IO.Stream-utgång = svar. OutputStream;
    System.IO.StreamWriter writer = ny System.IO.StreamWriter (output);
    författare. Write(responseString);
    Utgångsströmmen måste stängas av
    författare. Close();
    if (Console.KeyAvailable)
        paus;
}
Stäng ner servern
lyssnare. Stop();

När man använder HttpListener blir vanliga förfrågnings- och svarsparametrar objektegenskaper, vilket kraftigt minskar programmeringsarbetsbördan. De flesta parametrar måste dock fortfarande nås via Headers-indexern, precis som Accept-Encoding-request-parametern i exemplet ovan, som vi inte kan komma åt direkt via egenskaperna.




Föregående:CSS-filer och js-filer följs av ett frågetecken
Nästa:Dagen har börjat!! Kom igen, allihop
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com