この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 17368|答える: 0

[出典] HttpListenerベースのウェブサーバー

[リンクをコピー]
掲載地 2015/12/21 11:00:26 | | |

HTTPプロトコルのリスナーをさらに簡素化するために、 .NETは名前空間 System.Net にHttpListenerクラスを提供します。 このオブジェクトに添えて、 .NETはHTTP処理作業をカプセル化する一連の関連オブジェクトを提供します。 このクラスはHttp.sysシステムコンポーネントを使って作業を行うため、Windows XPSP2またはServer 2003以降のOSでのみ使用可能です。

HttpListenerクラスはリスニング操作をさらに簡素化し、リスニング作業を開始するためにリスニングのアドレス、ポート番号、文字列メソッドを通じた仮想パスを提供するだけで済みます。

リスニングを開始すると、GetContextメソッドがスレッドをブロックします。クライアントのリクエストが届くと、HttpListenerはクライアントリクエストを処理する一般的なプロキシとしてHttpListenerContextオブジェクトを返します。プロキシオブジェクトのRequestプロパティを通じて、リクエストパラメータを表すHttpListenerRequest型のオブジェクトを取得できます。このオブジェクトはほとんどのリクエストパラメータをオブジェクト化します。リクエストパラメータは、提供される一連のプロパティを通じて得られます。 例えば、HttpListenerRequestのHttpMethodプロパティは、要求されるメソッドタイプを提供します。 プロキシのResponse属性を通じて、HttpListenerResponse型のレスポンス処理オブジェクトを得ることができ、これはレスポンスのデータと操作をカプセル化し、レスポンスのプログラミング作業を大幅に簡素化します。作業プロセスは以下の通りです。
//检查系统是否支持
もし(! HttpListener.IsSupported)
{
    throw new System.InvalidOperationException(
        「HttpListenerを使用するには、Windows XP SP2かServer 2003以降のバージョンが必要です!」 );
}
接頭辞は必ず/のスラッシュで終わらせる必要があることに注意してください
string[] 接頭辞 = 新しい文字列[] { "http://localhost:49152/" };
リスナーを作りましょう。
HttpListener リスナー = 新しいHttpListener();
モニターのプレフィックスを追加します。
foreach(接頭辞の文字列s)
{
    リスナー。 プレフィックス.Add(s);
}
聴き始め
リスナー。 Start();
Console.WriteLine(「聞いている...」);
while(真)
{
    注:GetContextメソッドはリクエストが届くまでスレッドをブロックします
    HttpListenerContext context = listener. GetContext();
    リクエストオブジェクトを取得します
    HttpListenerRequest request = context. リクエスト;
    Console.WriteLine("{0} {1} HTTP/1.1", リクエスト。 HttpMethod、リクエスト。 RawUrl);
    Console.WriteLine("Accept: {0}"、文字列。 Join("、"、リクエスト)。 AcceptTypes));
    Console.WriteLine("Accept-Language: {0}",
        ストリング。 Join("、"、リクエスト)。 UserLanguages));
    Console.WriteLine("User-Agent: {0}"、リクエスト。 UserAgent);
    Console.WriteLine("Accept-Encoding: {0}", リクエスト。 Headers[「Accept-Encoding」]);
    Console.WriteLine("Connection: {0}",
        お願い。 KeepAliv e? 「Keep-Alive」とは「近く」の意思です。
    Console.WriteLine("Host: {0}"、リクエスト。 UserHostName);
    Console.WriteLine("Pragma: {0}"、リクエスト。 ヘッダー[「Pragma」]);
    反応目標を取得
    HttpListenerResponse response = コンテキスト。 応答;
    応答内容を構築する
    文字列応答文字列
        = @"<html>
                <head><title>HttpListener サーバーより</title></head>
                <body><h1>ハローワールド。</h1></body>
            </html>「;
    レスポンスヘッダーの内容、長さ、エンコーディングを設定します
    応答。 ContentLength64
        = System.Text.Encoding.UTF8.GetByteCount(responseString);
    応答。 ContentType = "text/html; charset=UTF-8";
    出力応答
    System.IO.Stream 出力=応答。 OutputStream;
    System.IO.StreamWriter = 新しいSystem.IO.StreamWriter(output);
    作家。 Write(responseString);
    出力ストリームは電源を切る必要があります
    作家。 Close();
    if(Console.KeyAvailable)
        休憩;
}
サーバーをシャットダウンしてください
リスナー。 Stop();

HttpListenerを使用する場合、一般的に使われるリクエストおよびレスポンスパラメータがオブジェクトプロパティとなり、プログラミングの負荷を大幅に軽減します。 しかし、ほとんどのパラメータは依然としてヘッダーインデクサーを通じてアクセスする必要があります。これは上記の例のAccept-Encodingリクエストパラメータと同様に、プロパティから直接アクセスすることはできません。




先の:CSSファイルとjsファイルの後には疑問符が付いています
次に:一日が始まりました!! さあ、みんな
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com