Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 17368|Răspunde: 0

[Sursă] Server web bazat pe HttpListener

[Copiază linkul]
Postat pe 21.12.2015 11:00:26 | | |

Pentru a simplifica și mai mult ascultătorii pentru protocolul HTTP, . .NET oferă clasa HttpListener în spațiul de nume System.Net. Însoțind acest obiect, . .NET oferă o serie de obiecte înrudite care încapsulează munca de procesare HTTP. Rețineți că această clasă folosește Http.sys componente de sistem pentru a face treaba, astfel încât poate fi folosită doar pe sistemele de operare Windows XPSP2 sau Server 2003 sau ulterioare.

Clasa HttpListener simplifică și mai mult operația de ascultare și trebuie doar să furnizeze adresa de ascultare, numărul portului și calea virtuală prin metoda stringurilor pentru a începe munca de ascultare.

După ce începe să asculte, metoda GetContext va bloca firul de execuție, iar când cererea clientului sosește, HttpListener returnează un obiect HttpListenerContext ca proxy general pentru procesarea cererilor clientului, prin proprietatea Request a obiectului proxy, putem obține un obiect de tip HttpListenerRequest care reprezintă parametrii cererii, acest obiect obiectificând majoritatea parametrilor cererii, deci , putem obține parametrii cererii printr-o serie de proprietăți pe care le oferă. De exemplu, proprietatea HttpMethod a HttpListenerRequest oferă tipul de metodă solicitat. Prin atributul Response al proxy-ului, putem obține un obiect de procesare a răspunsului de tip HttpListenerResponse, care cuprinde datele și operațiile răspunsului, ceea ce simplifică considerabil volumul de lucru de programare al răspunsului, iar procesul de lucru este următorul:
//检查系统是否支持
dacă (! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "Pentru a folosi HttpListener, trebuie să fii pe Windows XP SP2 sau Server 2003 sau mai târziu!" );
}
Rețineți că prefixul trebuie să se termine cu o bară oblică / înainte
string[] prefixe = new string[] { "http://localhost:49152/" };
Creează un ascultător.
Ascultător HttpAscultător = Ascultător HttpNou();
Adaugă prefixul monitorului.
foreach (șiruri s în prefixe)
{
    Ascultător. Prefixe. Adaugă;
}
Începe să asculți
Ascultător. Start();
Console.WriteLine(" ascultând...");
în timp ce (adevărat)
{
    Notă: Metoda GetContext va bloca firul până când cererea va ajunge
    HttpListenerContext = ascultător. GetContext();
    Obține obiectul de cerere
    Cerere HttpListenerRequest = context. Cerere:
    cerere Console.WriteLine("{0} {1} HTTP/1.1". HttpMethod, cerere. RawUrl);
    Console.WriteLine("Accept: {0}", string. Join(",", cerere. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Șnur. Join(",", cerere. LimbajeUtilizator));
    Console.WriteLine("User-Agent: {0}", solicitare. UserAgent);
    Cerere Console.WriteLine ("Accept-Encoding: {0}". antete["Accept-Encoding"]);
    Console.WriteLine("Connection: {0}",
        cerere. KeepAlive e ? "Păstrează-Alive" : "aproape");
    Cerere Console.WriteLine("Host: {0}". UserHostName);
    Cerere Console.WriteLine("Pragma: {0}". antete["Pragma"]);
    Obține ținta de răspuns
    HttpListenerResponse răspuns = context. Răspuns;
    Construiește conținutul răspunsului
    Răspuns string String
        = @"<html>
                <head><title>De la HttpListener Server</title></head>
                <body><h1>bună oameni buni.</h1></body>
            ";</html>
    Setează conținutul antetului răspunsului, lungimea, codarea
    răspuns. ConținutLungime64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    răspuns. ContentType = "text/html; caractere=UTF-8";
    Răspunsuri la ieșire
    System.IO.Stream output = răspuns. OutputStream;
    System.IO.StreamWriter scriitor = noul System.IO.StreamWriter(output);
    scriitor. Write(responseString);
    Fluxul de ieșire trebuie oprit
    scriitor. Apropiat();
    if (Console.KeyAvailable)
        pauză;
}
Închide serverul
Ascultător. Stop();

Când se folosește HttpListener, parametrii de cerere și răspuns utilizați frecvent devin proprietăți ale obiectului, ceea ce reduce semnificativ sarcina de lucru de programare. Totuși, majoritatea parametrilor trebuie totuși accesați prin indexatorul Headers, la fel ca parametrul de cerere Accept-Encoding din exemplul de mai sus, la care nu putem accesa direct prin proprietăți.




Precedent:Fișierele CSS și js sunt urmate de un semn de întrebare
Următor:Ziua a început!! Haideți, toată lumea
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com