Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 17368|Antwoord: 0

[Bron] HttpListener-gebaseerde webserver

[Link kopiëren]
Geplaatst op 21-12-2015 11:00:26 | | |

Om luisteraars voor het HTTP-protocol verder te vereenvoudigen, . .NET levert de HttpListener-klasse in de naamruimte System.Net. Bij dit object is . .NET biedt een reeks gerelateerde objecten die HTTP-verwerkingswerk encapsuleren. Let op: deze klasse gebruikt Http.sys systeemcomponenten om het werk te doen, dus het kan alleen worden gebruikt op Windows XPSP2- of Server 2003- of latere besturingssystemen.

De HttpListener-klasse vereenvoudigt de luisteroperatie verder en hoeft alleen het luisteradres, poortnummer en virtueel pad via de stringmethode te geven om het luisterwerk te starten.

Na het starten van het luisteren blokkeert de GetContext-methode de thread; wanneer het verzoek van de client arriveert, geeft HttpListener een HttpListenerContext-object terug als algemene proxy voor het verwerken van clientverzoeken, via de Request-eigenschap van het proxy-object kunnen we een object van het type HttpListenerRequest krijgen dat de verzoekparameters vertegenwoordigt, dit object objectificeert de meeste verzoekparameters, dus , kunnen we de verzoekparameters krijgen via een reeks eigenschappen die het biedt. Bijvoorbeeld, de eigenschap HttpMethod van HttpListenerRequest geeft het gevraagde methodetype. Via het Response-attribuut van de proxy kunnen we een responsverwerkingsobject van het type HttpListenerResponse verkrijgen, dat de gegevens en operaties van de respons encapsuleert, wat de programmeerbelasting van het antwoord sterk vereenvoudigt, en het werkproces is als volgt:
//检查系统是否支持
als (! HttpListener.IsSupported)
{
    gooi nieuw System.InvalidOperationException(
        "Om HttpListener te gebruiken, moet je Windows XP SP2 of Server 2003 of later gebruiken!" );
}
Let op dat het voorvoegsel moet eindigen met een / voorover-slash
string[] voorvoegsels = nieuwe string[] { "http://localhost:49152/" };
Creëer een luisteraar.
HttpListener listener = nieuwe HttpListener();
Voeg het voorvoegsel van de monitor toe.
foreach (string s in voorvoegsels)
{
    luisteraar. Voorvoegsels.Toevoeging(en);
}
Begin maar te luisteren
luisteraar. Start();
Console.WriteLine(" luisteren...");
terwijl (waar)
{
    Opmerking: De GetContext-methode blokkeert de thread totdat het verzoek arriveert
    HttpListenerContext context = luisteraar. GetContext();
    Haal het request-object op
    HttpListenerRequest request = context. Verzoek;
    Console.WriteLine("{0} {1} HTTP/1.1", verzoek. HttpMethod, verzoek. RawUrl);
    Console.WriteLine("Accept: {0}", string. Join(",", verzoek. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Snaar. Join(",", verzoek. UserLanguages));
    Console.WriteLine("User-Agent: {0}", verzoek. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", verzoek. Headers["Accept-Coding"]);
    Console.WriteLine("Verbinding: {0}",
        verzoek. KeepAliv e ? "Keep-Alive": "dichtbij");
    Console.WriteLine("Host: {0}", verzoek. UserHostName);
    Console.WriteLine("Pragma: {0}", verzoek. Headers["Pragma"]);
    Haal het responsdoel
    HttpListenerResponse antwoord = context. Respons;
    Stel de responsinhoud samen
    SnaarresponsSnaar
        = @"<html>
                <head><title>Van HttpListener Server</title></head>
                <body><h1>Hallo mensen.</h1></body>
            ";</html>
    Stel de inhoud van de responsheader in, lengte en codering in
    reactie. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    reactie. ContentType = "text/html; charset=UTF-8";
    Uitvoerresponsen
    System.IO.Stream output = respons. OutputStream;
    System.IO.StreamWriter writer = nieuwe System.IO.StreamWriter (output);
    schrijver. Write(responseString);
    De uitgangsstroom moet worden uitgeschakeld
    schrijver. Close();
    if (Console.KeyAvailable)
        pauze;
}
Sluit de server uit
luisteraar. Stop();

Bij gebruik van HttpListener worden veelgebruikte verzoek- en responsparameters objecteigenschappen, wat de programmeerbelasting aanzienlijk vermindert. De meeste parameters moeten echter nog steeds worden benaderd via de Headers-indexer, net als de Accept-Encoding requestparameter in het bovenstaande voorbeeld, die we niet direct via de eigenschappen kunnen bereiken.




Vorig:CSS-bestanden en js-bestanden worden gevolgd door een vraagteken
Volgend:De dag is begonnen!! Kom op, iedereen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com