Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 17368|Atbildi: 0

[Avots] HttpListener tīmekļa serveris

[Kopēt saiti]
Publicēts 21.12.2015 11:00:26 | | |

Lai vēl vairāk vienkāršotu HTTP protokola klausītājus, . .NET nodrošina HttpListener klasi nosaukumvietas System.Net. Kopā ar šo objektu, . .NET nodrošina virkni saistītu objektu, kas ietver HTTP apstrādes darbu. Ņemiet vērā, ka šī klase izmanto Http.sys sistēmas komponentus, lai paveiktu darbu, tāpēc to var izmantot tikai operētājsistēmās Windows XPSP2 vai Server 2003 vai jaunākās operētājsistēmās.

Klase HttpListener vēl vairāk vienkāršo klausīšanās darbību, un, lai sāktu klausīšanās darbu, ir jānorāda tikai klausīšanās adrese, porta numurs un virtuālais ceļš, izmantojot virknes metodi.

Pēc klausīšanās sākšanas GetContext metode bloķēs pavedienu, kad klienta pieprasījums pienāks, HttpListener atgriež HttpListenerContext objektu kā vispārējo starpniekserveri klienta pieprasījumu apstrādei, izmantojot starpniekservera objekta rekvizītu Request, mēs varam iegūt HttpListenerRequest tipa objektu, kas pārstāv pieprasījuma parametrus, šis objekts objektizē lielāko daļu pieprasījuma parametru, tāpēc , mēs varam iegūt pieprasījuma parametrus, izmantojot virkni tā nodrošināto rekvizītu. Piemēram, rekvizīts HttpListenerRequest nodrošina pieprasīto metodes tipu. Izmantojot starpniekservera atribūtu Response, mēs varam iegūt atbildes apstrādes objektu ar tipu HttpListenerResponse, kas ietver atbildes datus un darbības, kas ievērojami vienkāršo atbildes programmēšanas darba slodzi, un darba process ir šāds:
//检查系统是否支持
ja (! HttpListener.IsSupported)
{
    mest jaunu System.InvalidOperationException(
        "Lai izmantotu HttpListener, datorā jābūt Windows XP SP2 vai Server 2003 vai jaunākai versijai!" );
}
Ņemiet vērā, ka prefiksam jābeidzas ar slīpsvītru
string[] prefiksi = jauna virkne[] { "http://localhost:49152/" };
Izveidojiet klausītāju.
HttpListener klausītājs = jauns HttpListener();
Pievienojiet monitora prefiksu.
foreach (virkne s prefiksos)
{
    klausītājs. Prefiksi.Pievienot(-i);
}
Sāciet klausīties
klausītājs. Sākums();
Console.WriteLine(" klausās...");
kamēr (patiess)
{
    Piezīmes: GetContext metode bloķēs pavedienu, līdz pieprasījums pienāks
    HttpListenerContext context = klausītājs. GetContext();
    Saņemt pieprasījuma objektu
    HttpListenerRequest pieprasījums = konteksts. Pieprasījums;
    Console.WriteLine("{0} {1} HTTP/1.1", pieprasījums. HttpMethod, pieprasījums. RawUrl);
    Console.WriteLine("Akceptēt: {0}", virkne. Pievienoties(",", pieprasījums. AcceptTypes));
    Console.WriteLine("Akceptēšanas valoda: {0}",
        virkne. Pievienoties(",", pieprasījums. UserLanguages));
    Console.WriteLine("Lietotāja aģents: {0}", pieprasījums. Lietotāja aģents);
    Console.WriteLine("Akceptēt-kodējums: {0}", pieprasījums. galvenes["akceptēšana-kodēšana"]);
    Console.WriteLine("Savienojums: {0}",
        pieprasījums. KeepAliv e ? "Keep Alive" : "aizvērt");
    Console.WriteLine("Resursdators: {0}", pieprasījums. UserHostName);
    Console.WriteLine("Pragma: {0}", pieprasījums. Galvenes["Pragma"]);
    Atbildes mērķa iegūšana
    HttpListenerResponse atbilde = konteksts. Atbilde;
    Atbildes satura veidošana
    virknes responseString
        = @"<html>
                <head><title>No HttpListener servera</title></head>
                <body><h1>sveika, pasaule.</h1></body>
            ";</html>
    Atbildes galvenes satura, garuma, kodējuma iestatīšana
    atbilde. Satura garums64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    atbilde. ContentType = "teksts/html; rakstzīmju kopa=UTF-8";
    Izvades atbildes
    System.IO.Stream izeja = atbilde. Izejas plūsma;
    System.IO.StreamWriter rakstītājs = jauns System.IO.StreamWriter(izvade);
    rakstnieks. Write(atbildes virkne);
    Izvades plūsmai jābūt izslēgtai
    rakstnieks. Aizvērt ();
    if (Console.KeyAvailable)
        pārtraukums;
}
Servera izslēgšana
klausītājs. Stop();

Izmantojot HttpListener, bieži izmantotie pieprasījuma un atbildes parametri kļūst par objekta rekvizītiem, kas ievērojami samazina programmēšanas darba slodzi. Tomēr lielākajai daļai parametru joprojām ir jāpiekļūst, izmantojot galvenes indeksētāju, tāpat kā iepriekš minētajā piemērā redzamais pieprasījuma parametrs Accept-Encoding, kuram mēs nevaram piekļūt tieši, izmantojot rekvizītus.




Iepriekšējo:CSS failiem un js failiem seko jautājuma zīme
Nākamo:Diena ir sākusies! Nāc, visi
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com