Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 17368|Antwort: 0

[Quelle] HttpListener-basierter Webserver

[Link kopieren]
Veröffentlicht am 21.12.2015 11:00:26 | | |

Um die Zuhörer für das HTTP-Protokoll weiter zu vereinfachen, gilt . .NET stellt die Klasse HttpListener im Namensraum System.Net bereit. Mit diesem Objekt verbunden ist . .NET bietet eine Reihe verwandter Objekte, die HTTP-Verarbeitungsarbeiten kapseln. Beachten Sie, dass diese Klasse Http.sys Systemkomponenten verwendet, um die Aufgabe zu erledigen, sodass sie nur auf Windows XPSP2- oder Server 2003- oder neueren Betriebssystemen verwendet werden kann.

Die Klasse HttpListener vereinfacht die Höroperation weiter und benötigt lediglich die Höradresse, die Portnummer und den virtuellen Pfad durch die String-Methode, um die Hörarbeit zu starten.

Nachdem das Zuhören begonnen hat, blockiert die Methode GetContext den Thread. Wenn die Client-Anfrage eintrifft, gibt HttpListener ein HttpListenerContext-Objekt als allgemeinen Proxy zur Verarbeitung von Client-Anfragen zurück. Über die Request-Eigenschaft des Proxy-Objekts können wir ein Objekt vom Typ HttpListenerRequest erhalten, das die Anfrageparameter repräsentiert. Dieses Objekt objektifiziert die meisten Anfrageparameter, also , können wir die Anfrageparameter durch eine Reihe von bereitgestellten Eigenschaften erhalten. Zum Beispiel liefert die Eigenschaft HttpMethod von HttpListenerRequest den angeforderten Methodentyp. Durch das Response-Attribut des Proxys können wir ein Response-Processing-Objekt vom Typ HttpListenerResponse erhalten, das die Daten und Operationen der Antwort kapselt, was die Programmierlast der Antwort erheblich vereinfacht, und der Arbeitsprozess ist wie folgt:
//检查系统是否支持
wenn (! HttpListener.IsSupported)
{
    Throw new System.InvalidOperationException(
        "Um HttpListener zu nutzen, musst du Windows XP SP2 oder Server 2003 oder später nutzen!" );
}
Beachte, dass das Präfix mit einem / forward slash enden muss
string[] Präfixe = neue String[] { "http://localhost:49152/" };
Erstelle einen Zuhörer.
HttpListener Listener = neuer HttpListener();
Füge das Präfix des Monitors hinzu.
foreach (Zeichenkette s mit Präfixen)
{
    Zuhörer. Präfixe.Add(s);
}
Fang an zuzuhören
Zuhörer. Start();
Console.WriteLine(" listening...");
während (wahr)
{
    Hinweis: Die GetContext-Methode blockiert den Thread, bis die Anfrage eintrifft
    httpListenerContext context = Listener. GetContext();
    Hol das Anfrageobjekt
    HttpListenerRequest-Anfrage = Kontext. Bitte;
    Console.WriteLine("{0} {1} HTTP/1.1", Anfrage. HttpMethod, Anfrage. RawUrl);
    Console.WriteLine("Accept: {0}", String. Join(",", Anfrage. AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        Schnur. Join(",", Anfrage. UserLanguages));
    Console.WriteLine("User-Agent: {0}", Anfrage. UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", Anfrage. Headers["Accept-Encoding"]);
    Console.WriteLine("Verbindung: {0}",
        Antrag. Bewahren Sie Leben? "Bleib am Leben": "nah");
    Console.WriteLine("Host: {0}", Anfrage. UserHostName);
    Console.WriteLine("Pragma: {0}", Anfrage. Überschriften["Pragma"]);
    Erreiche das Antwortziel
    HttpListenerResponse Antwort = Kontext. Reaktion;
    Konstruiere den Antwortinhalt
    String-ResponseString
        = @"<html>
                <head><title>Vom HttpListener-Server</title></head>
                <body><h1>Hallo Welt.</h1></body>
            ";</html>
    Setze den Inhalt des Antwortheaders, Länge, Codierung
    Antwort. ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    Antwort. ContentType = "text/html; charset=UTF-8";
    Ausgabeantworten
    System.IO.Stream-Ausgabe = Antwort. OutputStream;
    System.IO.StreamWriter writer = neuer System.IO.StreamWriter (Ausgabe);
    Schriftsteller. Write(responseString);
    Der Ausgangsstrom muss abgeschaltet werden
    Schriftsteller. Close();
    if (Console.KeyAvailable)
        Unterbrechung;
}
Schalte den Server herunter
Zuhörer. Stop();

Bei Verwendung von HttpListener werden häufig verwendete Anfrage- und Antwortparameter zu Objekteigenschaften, was die Programmierarbeit erheblich reduziert. Allerdings müssen die meisten Parameter weiterhin über den Headers-Indexer abgerufen werden, genau wie der Accept-Encoding-Request-Parameter im obigen Beispiel, den wir nicht direkt über die Eigenschaften erreichen können.




Vorhergehend:CSS- und JS-Dateien werden von einem Fragezeichen gefolgt
Nächster:Der Tag hat begonnen!! Kommt schon, alle zusammen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com