Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 17368|Risposta: 0

[Fonte] Server web basato su HttpListener

[Copiato link]
Pubblicato su 21/12/2015 11:00:26 | | |

Per semplificare ulteriormente gli ascoltatori del protocollo HTTP, . .NET fornisce la classe HttpListener nello spazio di nomi System.Net. Accompagnando questo oggetto, . .NET fornisce una serie di oggetti correlati che racchiudono il lavoro di elaborazione HTTP. Si noti che questa classe utilizza Http.sys componenti di sistema per svolgere il compito, quindi può essere utilizzata solo su Windows XPSP2, Server 2003 o sistemi operativi successivi.

La classe HttpListener semplifica ulteriormente l'operazione di ascolto e deve solo fornire l'indirizzo di ascolto, il numero della porta e il percorso virtuale attraverso il metodo della stringa per iniziare il lavoro di ascolto.

Dopo aver iniziato l'ascolto, il metodo GetContext bloccherà il thread; quando arriva la richiesta del cliente, HttpListener restituisce un oggetto HttpListenerContext come proxy generale per l'elaborazione delle richieste del client; tramite la proprietà Request dell'oggetto proxy, possiamo ottenere un oggetto di tipo HttpListenerRequest che rappresenta i parametri della richiesta, questo oggetto oggettifica la maggior parte dei parametri della richiesta, quindi , possiamo ottenere i parametri della richiesta tramite una serie di proprietà che fornisce. Ad esempio, la proprietà HttpMethod di HttpListenerRequest fornisce il tipo di metodo richiesto. Attraverso l'attributo Response del proxy, possiamo ottenere un oggetto di elaborazione della risposta di tipo HttpListenerResponse, che racchiude i dati e le operazioni della risposta, semplificando notevolmente il carico di lavoro di programmazione della risposta, e il processo di lavoro è il seguente:
//检查系统是否支持
se (! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "Per usare HttpListener, devi essere su Windows XP SP2 o Server 2003 o successivo!" );
}
Nota che il prefisso deve terminare con una barra / in avanti
prefissi string[] = nuova stringa[] { "http://localhost:49152/" };
Crea un ascoltatore.
HttpListener listener = nuovo HttpListener();
Aggiungi il prefisso del monitor.
foreach (stringhe s nei prefissi)
{
    ascoltatore. Prefissi. Aggiungi;
}
Inizia ad ascoltare
ascoltatore. Start();
Console.WriteLine(" ascolto...");
mentre (vero)
{
    Nota: Il metodo GetContext bloccherà il thread fino all'arrivo della richiesta
    HttpListenerContext = ascoltatore. GetContext();
    Ottieni l'oggetto richiesta
    HttpListenerRequest request = contesto. Richiesta;
    Console.WriteLine("{0} {1} HTTP/1.1", richiesta. Metodo Http, richiesta. RawUrl);
    Console.WriteLine("Accettare: {0}", stringa. Join (",", richiesta. AccettaTipi));
    Console.WriteLine("Accetta-Lingua: {0}",
        stringo. Join (",", richiesta. Linguaggi utente));
    Console.WriteLine("User-Agent: {0}", richiesta. UserAgent);
    Console.WriteLine("Accetta-Codifica: {0}", richiesta. Intestazioni["Accetta-Codifica"]);
    Console.WriteLine("Connessione: {0}",
        richiesta. Tieni Alive e ? "Keep-Alive" : "vicino");
    Console.WriteLine("Host: {0}", richiesta. UserHostName);
    Console.WriteLine("Pragma: {0}", richiesta. Intestazioni["Pragma"]);
    Ottieni il target di risposta
    HttpListenerResponse risposta = contesto. Risposta;
    Costruisci il contenuto della risposta
    risposta stringa Stringa
        = @"<html>
                <head><title>Da HttpListener Server</title></head>
                <body><h1>Salve, mondo.</h1></body>
            ";</html>
    Imposta il contenuto dell'intestazione risposta, la lunghezza, la codifica
    risposta. ContenutoLunghezza64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    risposta. ContentType = "testo/html; carset=UTF-8";
    Risposte di output
    System.IO.Stream output = risposta. OutputStream;
    System.IO.StreamWriter writer = nuovo System.IO.StreamWriter(output);
    scrittore. Write(responseString);
    Il flusso di uscita deve essere disattivato
    scrittore. Close();
    if (Console.KeyAvailable)
        pausa;
}
Spegni il server
ascoltatore. Stop();

Quando si utilizza HttpListener, i parametri di richiesta e risposta comunemente usati diventano proprietà degli oggetti, riducendo notevolmente il carico di lavoro di programmazione. Tuttavia, la maggior parte dei parametri deve comunque essere accessibile tramite l'indicizzatore Headers, proprio come il parametro di richiesta Accept-Encoding nell'esempio sopra, al quale non possiamo accedere direttamente tramite le proprietà.




Precedente:I file CSS e i file js sono seguiti da un punto interrogativo
Prossimo:La giornata è iniziata!! Dai, tutti
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com