Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 17368|Vastaus: 0

[Lähde] HttpListener-pohjainen verkkopalvelin

[Kopioi linkki]
Julkaistu 21.12.2015 11.00.26 | | |

Helpottaakseen kuuntelijoita HTTP-protokollalle, . .NET tarjoaa HttpListener-luokan nimiavaruudessa System.Net. Tämän esineen mukana . .NET tarjoaa sarjan toisiinsa liittyviä objekteja, jotka kapseloivat HTTP-käsittelytyön. Huomaa, että tämä luokka käyttää Http.sys järjestelmäkomponentteja työn suorittamiseen, joten sitä voi käyttää vain Windows XPSP2:ssa tai Server 2003:ssa tai uudemmissa käyttöjärjestelmissä.

HttpListener-luokka yksinkertaistaa kuuntelutoimintoa entisestään, ja sen tarvitsee vain antaa kuunteluosoite, porttinumero ja virtuaalinen reitti string-menetelmän läpi aloittaakseen kuuntelutyön.

Kuuntelun alkamisen jälkeen GetContext-metodi estää säikeen, kun asiakkaan pyyntö saapuu, HttpListener palauttaa HttpListenerContext-objektin yleisenä välityspalvelimena asiakaspyyntöjen käsittelyyn. Proxy-objektin Request-ominaisuuden kautta saadaan objekti tyypistä HttpListenerRequest, joka edustaa pyyntöparametreja, tämä objektifi suurimman osan pyyntöparametreista, joten , voimme saada pyyntöparametrit sarjan ominaisuuksien kautta, joita se tarjoaa. Esimerkiksi HttpListenerRequestin HttpMethod-ominaisuus antaa pyydetyn metodityypin. Välityspalvelimen Response-attribuutin kautta voimme saada vastauksenkäsittelyobjektin tyyppisellä HttpListenerResponse, joka kapseloi vastauksen tiedot ja toiminnot, mikä yksinkertaistaa huomattavasti vastauksen ohjelmointikuormaa, ja työprosessi on seuraava:
//检查系统是否支持
jos (! httpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "Käyttääksesi HttpListeneriä, sinun täytyy käyttää Windows XP SP2:ta tai Server 2003:ta tai uudempaa!" );
}
Huomaa, että etuliitteen tulee päättyä / eteenpäin suuntaviivoon
merkkijono[] etuliitteet = uusi merkkijono[] { "http://localhost:49152/" };
Luo kuuntelija.
HttpListener listener = uusi HttpListener();
Lisää näytön etuliite.
foreach (merkkijono s etuliitteissä)
{
    Kuuntelija. Prefixes.Add(s);
}
Aloita kuunteleminen
Kuuntelija. Start();
Console.WriteLine("kuuntelee...");
kun (totta)
{
    Huomautus: GetContext-metodi estää säikeen siihen asti, kunnes pyyntö saapuu
    HttpListenerContext Context = kuuntelija. GetContext();
    Hae pyyntöobjekti
    HttpListenerRequest-pyyntö = konteksti. Pyyntö;
    Console.WriteLine("{0} {1} HTTP/1.1", pyyntö. HttpMethod, pyyntö. RawUrl);
    Console.WriteLine("Hyväksy: {0}", merkkijono. Liity (",", pyyntö. AcceptTypes));
    Console.WriteLine("Hyväksy-kieli: {0}",
        naru. Liity (",", pyyntö. UserLanguages));
    Console.WriteLine("User-Agent: {0}", pyyntö. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", pyyntö. Headers["Accept-Encoding"]);
    Console.WriteLine("Yhteys: {0}",
        pyyntö. Säilytä? "Pysy elossa": "lähellä");
    Console.WriteLine("Host: {0}", pyyntö. UserHostName);
    Console.WriteLine("Pragma: {0}", pyyntö. Headers["Pragma"]);
    Hanki vastauskohde
    HttpListenerResponse-vastaus = konteksti. Vastaus;
    Rakenna vastaussisältö
    merkkijonovastausString
        = @"<html>
                <head><title>HttpListener Serveriltä</title></head>
                <body><h1>Moi maailma.</h1></body>
            ";</html>
    Aseta vastauksen otsikon sisältö, pituus, koodaus
    Vastaus. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount (responseString);
    Vastaus. ContentType = "teksti/html; charset=UTF-8";
    Tulosvasteet
    System.IO.Stream ulostulo = vaste. OutputStream;
    System.IO.StreamWriter writer = uusi System.IO.StreamWriter(output);
    kirjoittaja. Write(responseString);
    Lähtövirta on sammutettava
    kirjoittaja. Close();
    if (Console.KeyAvailable)
        tauko;
}
Sulje palvelin
Kuuntelija. Stop();

HttpListeneriä käytettäessä yleisesti käytetyt pyyntö- ja vastausparametrit muuttuvat objektin ominaisuuksiksi, mikä vähentää ohjelmointikuormaa huomattavasti. Kuitenkin suurin osa parametreista täytyy silti käyttää Headers-indeksoijan kautta, aivan kuten yllä olevaan Accept-Encoding-pyyntöparametriin, johon emme pääse suoraan ominaisuuksien kautta.




Edellinen:CSS- ja js-tiedostojen jälkeen on kysymysmerkki
Seuraava:Päivä on alkanut!! Tulkaa kaikki.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com