Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 17368|Svar: 0

[Kilde] HttpListener-baseret webserver

[Kopier link]
Opslået på 21/12/2015 11.00.26 | | |

For yderligere at forenkle lytterne for HTTP-protokollen, . .NET leverer HttpListener-klassen i navnerummet System.Net. Med dette objekt følger . .NET tilbyder en række relaterede objekter, der indkapsler HTTP-behandlingsarbejde. Bemærk, at denne klasse bruger Http.sys systemkomponenter til at udføre opgaven, så den kun kan bruges på Windows XPSP2 eller Server 2003 eller nyere operativsystemer.

HttpListener-klassen forenkler yderligere lytteoperationen og behøver kun at angive lytteadressen, portnummeret og den virtuelle sti gennem strengmetoden for at starte lyttearbejdet.

Efter at have begyndt at lytte, vil GetContext-metoden blokere tråden; når klientens anmodning ankommer, returnerer HttpListener et HttpListenerContext-objekt som den generelle proxy til behandling af klientanmodninger; gennem Request-egenskaben for proxyobjektet kan vi få et objekt af typen HttpListenerRequest, der repræsenterer anmodningsparametrene, dette objekt objektiviserer de fleste af anmodningsparametrene, så , kan vi få anmodningsparametrene gennem en række egenskaber, den giver. For eksempel angiver egenskaben HttpMethod i HttpListenerRequest den ønskede metodetype. Gennem Response-attributten på proxyen kan vi opnå et responsbehandlingsobjekt af typen HttpListenerResponse, som indkapsler dataene og operationerne i svaret, hvilket i høj grad forenkler programmeringsarbejdsbyrden for svaret, og arbejdsprocessen er som følger:
//检查系统是否支持
hvis (! HttpListener.IsSupported)
{
    smid nyt System.InvalidOperationException(
        "For at bruge HttpListener skal du være på Windows XP SP2 eller Server 2003 eller nyere!" );
}
Bemærk, at præfikset skal ende med en / fremadrettet skråstreg
string[] præfikser = ny streng[] { "http://localhost:49152/" };
Skab en lytter.
HttpListener lytter = ny HttpListener();
Tilføj skærmens præfiks.
foreach (streng s i præfikser)
{
    lytter. Præfikser.Tilføjelse(r);
}
Begynd at lytte
lytter. Start();
Console.WriteLine(" lytter...");
mens (sand)
{
    Bemærk: GetContext-metoden vil blokere tråden, indtil anmodningen ankommer
    HttpListenerContext context = lytter. GetContext();
    Få anmodningsobjektet
    HttpListenerRequest request = kontekst. Anmodning;
    Console.WriteLine("{0} {1} HTTP/1.1", forespørgsel. HttpMethod, anmoder. RawUrl);
    Console.WriteLine("Accepter: {0}", streng. Join(",", anmodning. AcceptTypes;;
    Console.WriteLine("Accept-Language: {0}",
        Snor. Join(",", anmodning. UserLanguages));
    Console.WriteLine("User-Agent: {0}", anmodning. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", anmodning. Headers["Accept-Kodning"]);
    Console.WriteLine("Forbindelse: {0}",
        anmodning. KeepAliv e ? "Keep-Alive": "Close");
    Console.WriteLine("Host: {0}", anmodning. UserHostName);
    Console.WriteLine("Pragma: {0}", anmodning. Headers["Pragma"]);
    Få responsmålet
    HttpListenerResponse svar = kontekst. Respons;
    Konstruer svarindholdet
    strengresponsStreng
        = @"<html>
                <head><title>Fra HttpListener Server</title></head>
                <body><h1>Hej verden.</h1></body>
            ";</html>
    Indstil svarets headerindhold, længde, kodning
    svar. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    svar. ContentType = "text/html; charset=UTF-8";
    Outputresponser
    System.IO.Stream-output = respons. OutputStream;
    System.IO.StreamWriter writer = ny System.IO.StreamWriter(output);
    forfatter. Write(responseString);
    Udgangsstrømmen skal slukkes
    forfatter. Close();
    hvis (Console.KeyAvailable)
        pause;
}
Luk serveren ned
lytter. Stop();

Når man bruger HttpListener, bliver almindeligt anvendte anmodnings- og svarparametre objektegenskaber, hvilket i høj grad reducerer programmeringsarbejdsbyrden. Dog skal de fleste parametre stadig tilgås via Headers-indekseren, ligesom Accept-Encoding-anmodningsparameteren i eksemplet ovenfor, som vi ikke kan få adgang til direkte gennem egenskaberne.




Tidligere:CSS-filer og js-filer efterfølges af et spørgsmålstegn
Næste:Dagen er begyndt!! Kom nu, alle sammen
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com