Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 17368|Répondre: 0

[Source] Serveur web basé sur HttpListener

[Copié le lien]
Publié sur 21/12/2015 11:00:26 | | |

Pour simplifier davantage les auditeurs du protocole HTTP, . .NET fournit la classe HttpListener dans l’espace de noms System.Net. Accompagnant cet objet, . .NET fournit une série d’objets apparentés qui encapsulent le travail de traitement HTTP. Notez que cette classe utilise Http.sys composants système pour accomplir la tâche, elle ne peut donc être utilisée que sur Windows XPSP2, Server 2003 ou les systèmes d’exploitation ultérieurs.

La classe HttpListener simplifie encore l’opération d’écoute, et n’a besoin que de fournir l’adresse d’écoute, le numéro de port et le chemin virtuel via la méthode de la chaîne pour commencer le travail d’écoute.

Après avoir commencé à écouter, la méthode GetContext bloque le thread, lorsque la requête du client arrive, HttpListener retourne un objet HttpListenerContext comme proxy général pour traiter les requêtes du client, via la propriété Request de l’objet proxy, on peut obtenir un objet de type HttpListenerRequest représentant les paramètres de requête, cet objet objectifie la plupart des paramètres de requête, donc , nous pouvons obtenir les paramètres de requête via une série de propriétés qu’il fournit. Par exemple, la propriété HttpMethod de HttpListenerRequest fournit le type de méthode demandé. Grâce à l’attribut Response du proxy, nous pouvons obtenir un objet de traitement de réponse de type HttpListenerResponse, qui encapsule les données et opérations de la réponse, ce qui simplifie grandement la charge de travail de programmation de la réponse, et le processus de travail est le suivant :
//检查系统是否支持
si ( ! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        « Pour utiliser HttpListener, vous devez être sur Windows XP SP2 ou Server 2003 ou plus récent ! » );
}
Notez que le préfixe doit se terminer par une barre oblique / avant
Séance[] préfixes = nouvelle chaîne[] { « http://localhost:49152/ » } ;
Créez un auditeur.
HttpListener auditeur = nouveau HttpListener() ;
Ajoutez le préfixe du moniteur.
foreach (chaîne s dans les préfixes)
{
    Auditeur. Préfixes. Ajouter(s) ;
}
Commence à écouter
Auditeur. Start() ;
Console.WriteLine( » écoute... ») ;
tandis que (vrai)
{
    Note : La méthode GetContext bloquera le thread jusqu’à l’arrivée de la requête
    HttpListenerContext = auditeur. GetContext() ;
    Obtenez l’objet requête
    HttpListenerRequest request request = contexte. Demande ;
    requête Console.WriteLine(« {0} {1} HTTP/1.1 ». HttpMethod, demande. RawUrl) ;
    Console.WriteLine (« Accept : {0} », chaîne. Joins(,", demande. AcceptTypes)) ;
    Console.WriteLine(« Accept-Language : {0} »,
        fichier. Joins(,", demande. UserLanguages)) ;
    Console.WriteLine (« User-Agent : {0} », requête. UserAgent) ;
    Console.WriteLine(« Accept-Encoding : {0} », requête. en-têtes[« Accept-Encoding »]) ;
    Console.WriteLine(« Connection : {0} »,
        demande. Keep Alive e ? « Garder en vie » : « proche ») ;
    Console.WriteLine (« Host : {0} », requête. NomDeHôteUtilisateur) ;
    Console.WriteLine (« Pragma : {0} », requête. en-tête[« Pragma »]) ;
    Obtenez la cible de réponse
    HttpListenerResponse réponse = contexte. Réponse ;
    Construire le contenu de la réponse
    Réponse de chaîne Chaîne
        = @"<html>
                <head><title>Extrait du serveur HttpListener</title></head>
                <body><h1>Salut tout le monde.</h1></body>
            ;</html>
    Définir le contenu de l’en-tête de la réponse, la longueur, l’encodage
    Réponse. ContenuLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString) ;
    Réponse. ContentType = « text/html ; charset=UTF-8" ;
    Réponses de sortie
    System.IO.Stream sortie = réponse. OutputStream ;
    Auteur System.IO.StreamWriter = nouveau System.IO.StreamWriter(sortie) ;
    écrivain. Write(responseString) ;
    Le flux de sortie doit être coupé
    écrivain. Close() ;
    if (Console.KeyAvailable)
        pause ;
}
Fermez le serveur
Auditeur. Stop() ;

Lors de l’utilisation de HttpListener, les paramètres de requête et de réponse couramment utilisés deviennent des propriétés d’objets, ce qui réduit considérablement la charge de travail de programmation. Cependant, la plupart des paramètres doivent encore être accessibles via l’indexeur Headers, tout comme le paramètre de requête Accept-Encoding dans l’exemple ci-dessus, auquel nous ne pouvons pas accéder directement via les propriétés.




Précédent:Les fichiers CSS et JS sont suivis d’un point d’interrogation
Prochain:La journée a commencé !! Allez, tout le monde
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com