Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 17368|Odpověď: 0

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

[Kopírovat odkaz]
Zveřejněno 21.12.2015 11:00:26 | | |

Pro další zjednodušení posluchačů pro HTTP protokol, . .NET poskytuje třídu HttpListener v jmenném prostoru System.Net. Doprovázející tento objekt, . .NET poskytuje řadu souvisejících objektů, které zapouzdřují práci s HTTP zpracováním. Všimněte si, že tato třída používá Http.sys systémové komponenty k vykonání své práce, takže ji lze použít pouze na operačních systémech Windows XPSP2 nebo Server 2003 či novějších.

Třída HttpListener dále zjednodušuje operaci poslechu a stačí poskytnout poslechovou adresu, číslo portu a virtuální cestu metodou řetězce, aby mohla začít poslechovou práci.

Po zahájení poslechu metoda GetContext zablokuje vlákno, když dorazí požadavek klienta, HttpListener vrátí objekt HttpListenerContext jako obecný proxy pro zpracování klientských požadavků, prostřednictvím vlastnosti Request v proxy objektu můžeme získat objekt typu HttpListenerRequest reprezentující parametry požadavku, tento objekt objektivizuje většinu parametrů požadavku, takže , parametry požadavku můžeme získat pomocí řady vlastností, které poskytuje. Například vlastnost HttpMethod v HttpListenerRequest poskytuje požadovaný typ metody. Pomocí atributu Response v proxy můžeme získat objekt pro zpracování odpovědí typu HttpListenerResponse, který zapouzdřuje data a operace odpovědi, což výrazně zjednodušuje programovací zátěž odpovědi, a pracovní proces je následující:
//检查系统是否支持
pokud (! HttpListener.IsSupported)
{
    throw nový System.InvalidOperationException(
        "Pro použití HttpListeneru musíte mít Windows XP SP2 nebo Server 2003 či novší!" );
}
Všimněte si, že předpona musí končit na / dopředu
předpony řetězce[] = nový řetězec[] { "http://localhost:49152/" };
Vytvořte si posluchače.
HttpListener listener = nový HttpListener();
Přidejte předponu monitoru.
foreach (řetězec s v předponázích)
{
    posluchač. Prefixes.Add(s);
}
Začněte poslouchat
posluchač. Start();
Console.WriteLine(""poslouchání...");
zatímco (pravda)
{
    Poznámka: Metoda GetContext zablokuje vlákno, dokud nedorazí požadavek
    HttpListenerContext context = posluchač. GetContext();
    Získejte objekt požadavku
    HttpListenerRequest request = kontext. Žádost;
    Console.WriteLine("{0} {1} HTTP/1.1", požadavek. HttpMethod, žádost. RawUrl);
    Console.WriteLine("Přijmout: {0}", řetězec. Připojte se (",", žádost. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        String. Připojte se (",", žádost. UserLanguages));
    Console.WriteLine("User-Agent: {0}", požadavek. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", požadavek. hlavičky["Accept-Encoding"]);
    Console.WriteLine("Připojení: {0}",
        žádost. Udržet se v životě? "Keep-Alive" : "blízko");
    Console.WriteLine("Host: {0}", požadavek. UserHostName);
    Console.WriteLine("Pragma: {0}", požadavek. Hlavičky["Pragma"]);
    Získejte cíl odpovědi
    HttpListenerResponse response = kontext. Odpověď;
    Sestavte obsah odpovědi
    string responseString
        = @"<html>
                <head><title>Z HttpListener serveru</title></head>
                <body><h1>Ahoj světe.</h1></body>
            ";</html>
    Nastavte obsah hlavičky odpovědi, délku, kódování
    odpověď. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    odpověď. ContentType = "text/html; charset=UTF-8";
    Výstupní odezvy
    System.IO.Stream output = odpověď. OutputStream;
    System.IO.StreamWriter writer = nový System.IO.StreamWriter(output);
    spisovatel. Write(responseString);
    Výstupní proud musí být vypnutý
    spisovatel. Close();
    if (Console.KeyAvailable)
        pauza;
}
Vypněte server
posluchač. Stop();

Při použití HttpListeneru se běžně používané parametry požadavků a odpovědí stávají objektovými vlastnostmi, což výrazně snižuje programátorskou zátěž. Většina parametrů však musí být stále přístupná přes indexer Headers, stejně jako parametr Accept-Encoding request v uvedeném příkladu, ke kterému nemáme přístup přímo přes vlastnosti.




Předchozí:CSS soubory a js soubory jsou následovány otazníkem
Další:Den začal!! Pojďte všichni
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com