Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 17368|Odpoveď: 0

[Zdroj] Webový server založený na HttpListener

[Kopírovať odkaz]
Zverejnené 21. 12. 2015 11:00:26 | | |

Na ďalšie zjednodušenie poslucháčov pre HTTP protokol, . .NET poskytuje triedu HttpListener v mennom priestore System.Net. K tomuto objektu patrí . .NET poskytuje sériu súvisiacich objektov, ktoré zapuzdrujú prácu spracovania HTTP. Upozorňujeme, že táto trieda používa Http.sys systémové komponenty na vykonanie úlohy, takže ju možno použiť len na operačných systémoch Windows XPSP2 alebo Server 2003 či novších.

Trieda HttpListener ďalej zjednodušuje operáciu počúvania a na začatie počúvania stačí poskytnúť adresu počúvania, číslo portu a virtuálnu cestu cez metódu reťazca.

Po začatí počúvania metóda GetContext zablokuje vlákno, keď dorazí požiadavka klienta, HttpListener vráti objekt HttpListenerContext ako všeobecný proxy pre spracovanie požiadaviek klienta, cez vlastnosť Request v proxy objekte môžeme získať objekt typu HttpListenerRequest reprezentujúci parametre požiadavky, tento objekt objektivizuje väčšinu parametrov požiadaviek, takže , parametre požiadaviek môžeme získať prostredníctvom série vlastností, ktoré poskytuje. Napríklad vlastnosť HttpMethod v HttpListenerRequest poskytuje požadovaný typ metódy. Prostredníctvom atribútu Response v proxy môžeme získať objekt spracovania odpovede typu HttpListenerResponse, ktorý zapuzdruje dáta a operácie odpovede, čo výrazne zjednodušuje programovaciu záťaž odpovede, a pracovný proces je nasledovný:
//检查系统是否支持
ak (! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "Ak chcete používať HttpListener, musíte mať Windows XP SP2 alebo Server 2003 či novší!" );
}
Upozorňujeme, že predpona musí končiť na /forward slash
prefixy reťazca[] = nový reťazec[] { "http://localhost:49152/" };
Vytvorte si poslucháča.
HttpListener listener = nový HttpListener();
Pridajte prefix monitora.
foreach (reťazec s v prefixoch)
{
    poslucháč. Prefixes.Add(s);
}
Začnite počúvať
poslucháč. Start();
Console.WriteLine(" počúvanie...");
zatiaľ čo (pravda)
{
    Poznámka: Metóda GetContext zablokuje vlákno, kým požiadavka nepríde
    HttpListenerContext context = poslucháč. GetContext();
    Získajte objekt požiadavky
    HttpListenerRequest request = kontext. Žiadosť;
    Console.WriteLine("{0} {1} HTTP/1.1", požiadavka. HttpMethod, žiadosť. RawUrl);
    Console.WriteLine("Prijať: {0}", reťazec. Pridajte sa (",", žiadam. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Šnúrka. Pridajte sa (",", žiadam. UserLanguages));
    Console.WriteLine("User-Agent: {0}", požiadavka. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", požiadavka. hlavičky["Accept-Encoding"]);
    Console.WriteLine("Connection: {0}",
        žiadosť. Keep Livev e ? "Keep-Alive" : "close");
    Console.WriteLine("Hostiteľ: {0}", požiadavka. UserHostName);
    Console.WriteLine("Pragma: {0}", požiadavka. Hlavičky["Pragma"]);
    Získajte cieľ reakcie
    Odpoveď HttpListenerResponse = kontext. Odpoveď;
    Zostavte obsah odpovede
    odpoveď reťazcaReťazec
        = @"<html>
                <head><title>Zo servera HttpListener</title></head>
                <body><h1>čaute všetci.</h1></body>
            ";</html>
    Nastavte obsah hlavičky odpovede, dĺžku, kódovanie
    Odpoveď. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    Odpoveď. ContentType = "text/html; charset=UTF-8";
    Výstupné odpovede
    System.IO.Stream output = odpoveď. OutputStream;
    System.IO.StreamWriter writer = nový System.IO.StreamWriter(output);
    spisovateľ. Write(responseString);
    Výstupný prúd musí byť vypnutý
    spisovateľ. Close();
    if (Console.KeyAvailable)
        prestávka;
}
Vypnite server
poslucháč. Stop();

Pri používaní HttpListeneru sa bežne používané parametre požiadaviek a odpovedí stávajú objektovými vlastnosťami, čo výrazne znižuje programátorskú záťaž. Väčšina parametrov však stále musí byť prístupná cez indexer Headers, rovnako ako parameter požiadavky Accept-Encoding v uvedenom príklade, ku ktorému nemáme prístup priamo cez vlastnosti.




Predchádzajúci:CSS súbory a js súbory sú nasledované otáznikom
Budúci:Deň sa začal!! Poďte, všetci
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com