ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

C#で書く簡易HTTPサーバー(というよりはHTTPリクエスト受信サーバ?)

はてなブックマークのWebHookを今さらながら触っており、C#はてブWebHook受信機を開発中です。
今回はその為の第一歩として簡易HTTPサーバーのコードを書いてみました。
まあHTTPサーバーとは言っていますが、叩かれたアドレス(正確にはパス)とクエリ情報(QueryString)を吐き出すコードです。
whileで無限ループさせてHTTPリクエストが来るのをじっと待っています。
昔使ったなでしこのように無限ループで固まったりCPUのパワーを全部持っていかないか心配でしたが、それも杞憂だったようで普通に動いてくれました。
まあ現状ではポート解放やそもそもIPアドレスの直叩きになってしまう為、WebHookを受信できません。
ここは流行のReverseHttpという「ReverseHttpはサーバで何かアクションが起きた場合に、ブラウザ側がその通知を受信する...なんて事が出来るプロトコル」を利用してそこらへんを何とかしようと思っています。


ともかく次の段階はUpNPの実装をしようと思います。
それでは!

以下、サンプルコード

        static void Main(string[] args)
        {
            string prefix = "http://*/"; // 受け付けるURL

            HttpListener listener = new HttpListener();
            listener.Prefixes.Add(prefix); // プレフィックスの登録
            listener.Start();

            while (true)
            {
                HttpListenerContext context = listener.GetContext();
                HttpListenerRequest req = context.Request;
                HttpListenerResponse res = context.Response;

                Console.WriteLine(req.RawUrl);
                Console.WriteLine("---QueryString---");
                Console.WriteLine(req.QueryString);

                res.Close();
            }
        }