Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 17368|Respuesta: 0

[Fuente] Servidor web basado en HttpListener

[Copiar enlace]
Publicado en 21/12/2015 11:00:26 | | |

Para simplificar aún más los oyentes del protocolo HTTP, . .NET proporciona la clase HttpListener en el espacio de nombres System.Net. Acompañando este objeto, . .NET proporciona una serie de objetos relacionados que encapsulan el trabajo de procesamiento HTTP. Ten en cuenta que esta clase utiliza Http.sys componentes del sistema para realizar el trabajo, por lo que solo puede usarse en Windows XPSP2, Server 2003 o sistemas operativos posteriores.

La clase HttpListener simplifica aún más la operación de escucha, y solo necesita proporcionar la dirección de escucha, el número de puerto y la ruta virtual a través del método de cadenas para iniciar el trabajo de escucha.

Después de empezar a escuchar, el método GetContext bloqueará el hilo; cuando llega la solicitud del cliente, HttpListener devuelve un objeto HttpListenerContext como proxy general para procesar solicitudes del cliente; mediante la propiedad Request del objeto proxy, podemos obtener un objeto de tipo HttpListenerRequest que represente los parámetros de la solicitud, este objeto objetifica la mayoría de los parámetros de la solicitud, por lo que , podemos obtener los parámetros de la solicitud a través de una serie de propiedades que proporciona. Por ejemplo, la propiedad HttpMethod de HttpListenerRequest proporciona el tipo de método solicitado. A través del atributo Response del proxy, podemos obtener un objeto de procesamiento de respuesta de tipo HttpListenerResponse, que encapsula los datos y operaciones de la respuesta, lo que simplifica enormemente la carga de trabajo de programación de la respuesta, y el proceso de trabajo es el siguiente:
//检查系统是否支持
si (! httpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        "¡Para usar HttpListener, debes estar en Windows XP SP2 o Server 2003 o posterior!" );
}
Ten en cuenta que el prefijo debe terminar con una barra diagonal / hacia adelante
prefijos de cadena[] = nueva cadena[] { "http://localhost:49152/" };
Crea un oyente.
HttpListener listener = nuevo HttpListener();
Añade el prefijo del monitor.
foreach (cadena s en prefijos)
{
    Oyente. Prefijos.Añadir(los);
}
Empieza a escuchar
Oyente. Inicio();
Console.WriteLine(" escuchando...");
mientras que (verdadero)
{
    Nota: El método GetContext bloqueará el hilo hasta que llegue la petición
    HttpListenerContext context = oyente. GetContext();
    Obtén el objeto de solicitud
    HttpListenerRequest request = contexto. Petición;
    Consola.WriteLine("{0} {1} HTTP/1.1", solicitud. HttpMétodo, solicitud. RawUrl);
    Console.WriteLine("Aceptar: {0}", cadena. Join (",", petición. AceptarTipos));
    Console.WriteLine("Aceptar-Lenguaje: {0}",
        cuerda. Join (",", petición. UserLanguages));
    Consola.WriteLine("User-Agent: {0}", solicitud. UserAgent);
    Consola.WriteLine("Aceptar-Codificar: {0}", solicitud. cabeceras["Aceptar codificación"]);
    Consola.WriteLine("Conexión: {0}",
        Petición. ¿Mantenerlo en forma de vida ? "Mantener-Vivo": "cerca");
    Consola.WriteLine("Host: {0}", solicitud. NombreAnfitriónDeUsuario);
    Consola.WriteLine("Pragma: {0}", solicitud. encabezados["Pragma"]);
    Consigue el objetivo de respuesta
    HttpListenerResponse respuesta = contexto. Respuesta;
    Construye el contenido de respuesta
    string responseString
        = @"<html>
                <head><title>Desde HttpListener Server</title></head>
                <body><h1>Hola mundo.</h1></body>
            ";</html>
    Establecer el contenido de la cabecera de respuesta, longitud, codificación
    respuesta. ContenidoLongitud64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    respuesta. ContentType = "texto/html; charset=UTF-8";
    Respuestas de salida
    Salida System.IO.Stream = respuesta. OutputStream;
    Escritor System.IO.StreamWriter = nuevo System.IO.StreamWriter(salida);
    escritor. Write(responseString);
    El flujo de salida debe estar apagado
    escritor. Cerca();
    if (Consola.KeyAvailable)
        pausa;
}
Apaga el servidor
Oyente. Stop();

Al usar HttpListener, los parámetros de solicitud y respuesta comúnmente usados se convierten en propiedades de objetos, lo que reduce considerablemente la carga de trabajo de programación. Sin embargo, la mayoría de los parámetros aún deben accederse a través del indexador Headers, igual que el parámetro de solicitud Accept-Encoding en el ejemplo anterior, al que no podemos acceder directamente desde las propiedades.




Anterior:Los archivos CSS y archivos js van seguidos de un signo de interrogación
Próximo:¡El día ha comenzado! Vamos, todos
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com