Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 17368|Válasz: 0

[Forrás] HttpListener-alapú webszerver

[Linket másol]
Közzétéve 2015. 12. 21. 11:00:26 | | |

A HTTP protokoll hallgatóinak további egyszerűsítése érdekében . A .NET a HttpListener osztályt adja a névtérben System.Net. Ehhez a tárgyhoz kapcsolódva, . A .NET egy sor kapcsolódó objektumot kínál, amelyek a HTTP feldolgozási munkát lefedik. Fontos megjegyezni, hogy ez az osztály Http.sys rendszerkomponenseket használ a feladat elvégzéséhez, így csak Windows XPSP2, Server 2003 vagy újabb operációs rendszereken használható.

A HttpListener osztály tovább egyszerűsíti a hallgatási műveletet, és csak a hallgatási címet, portszámot és virtuális útvonalat kell megadnia a string módszeren keresztül a hallgatási munka elindításához.

A hallgatás megkezdése után a GetContext metódus blokkolja a szálat, amikor megérkezik a kliens kérése, a HttpListener egy HttpListenerContext objektumot ad vissza általános proxyként a klienskérések feldolgozásához, a proxy objektum Request tulajdonságán keresztül kaphatunk egy HttpListenerRequest típusú objektumot, amely a kérésparamétereket képviseli, ez az objektum a legtöbb kérésparamétert objektifikálja, így , a kérésparamétereket a megadott tulajdonságok sorozatán keresztül kaphatjuk meg. Például a HttpListenerRequest HttpMethod tulajdonsága megadja a kért metódustípust. A proxy Response attribútumán keresztül egy HttpListenerResponse típusú válaszfeldolgozó objektumot kaphatunk, amely bekapja a válasz adatait és műveleteit, jelentősen leegyszerűsítve a válasz programozási terhelését, és a munkafolyamat a következő:
//检查系统是否支持
ha (! httpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "A HttpListener használatához Windows XP SP2-n vagy Server 2003-on vagy még újabbnak kell lennie!" );
}
Fontos megjegyezni, hogy az előtagnak / előre lecsapással kell végződnie
string[] előtagok = új string[] { "http://localhost:49152/" };
Hozz létre egy hallgatót.
HttpListener hallgató = új HttpListener();
Add hozzá a monitor előtagját.
foreach (s sorok előtagokban)
{
    hallgató. Előtagok.Add(ok);
}
Kezdj el hallgatni
hallgató. Start();
Console.WriteLine("hallgatás...");
miközben (igaz)
{
    Megjegyzés: A GetContext módszer blokkolja a szálat, amíg meg nem érkezik a kérés
    HttpListenerContext context = hallgató. GetContext();
    Szerezd meg a kérés objektumot
    HttpListenerRequest request = kontextus. Kérés;
    Console.WriteLine("{0} {1} HTTP/1.1", request. HttpMethod, kérés. RawUrl);
    Console.WriteLine("Accept: {0}", string. Csatlakozz(",", kérés. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Zsinór. Csatlakozz(",", kérés. UserLanguages));
    Console.WriteLine("User-Agent: {0}", request. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", request. fejléceket["Accept-Encoding"]);
    Console.WriteLine("Connection: {0}",
        kérés. Maradj meg ? "Életben maradjon": "közel");
    Console.WriteLine("Host: {0}", request. UserHostName);
    Console.WriteLine("Pragma: {0}", request. fejléceik["Pragma"]);
    Válaszcél megszerzése
    HttpListenerResponse válasz = kontextus. Válasz;
    A választartalom megalkotása
    string responseString
        = @"<html>
                <head><title>A HttpListener szerverről</title></head>
                <body><h1>Helló világ.</h1></body>
            ";</html>
    Állítsd be a válaszfejléc tartalmát, hosszát, kódolását
    válasz. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    válasz. ContentType = "szöveg/html; charset=UTF-8";
    Kimeneti válaszok
    System.IO.Stream kimenet = válasz. OutputStream;
    System.IO.StreamWriter writer = új System.IO.StreamWriter(output);
    író. Write(responseString);
    A kimeneti áramot ki kell kapcsolni
    író. Close();
    if (Console.KeyAvailable)
        szünet;
}
Állítsd le a szervert
hallgató. Stop();

A HttpListener használata során a gyakran használt kérés- és válaszparaméterek objektumtulajdonságokká válnak, ami jelentősen csökkenti a programozási terhelést. Azonban a legtöbb paramétert továbbra is a Headers indexeren keresztül kell elérni, akárcsak az Accept-Encoding request paraméter a fenti példában, amelyet közvetlenül a tulajdonságokon keresztül nem lehet elérni.




Előző:CSS és js fájlok után kérdőjel következik
Következő:Elkezdődött a nap!! Gyertek, mindenki
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com