2007.10.09 | program
.NETでHTTPプロコルのパース
C# .NETでHTTP通信を低レベルで実装する必要になって、自分でHTTPプロトコルをパースしなければいけないことになりましたが、自分でパースするのは嫌だ。
しかし、.NETクラスライブラリにパースするクラスが無い。嫌々探してみると、HttpServerChannelというクラスを発見。httpでリモーティングを行うクラスらしい。
マニュアルを読んでみると、HTTPヘッダーやCONTENTSを自前でパースせずに取得できそうだ。テストコードを書いてみると、IServerChannelSinkというインターフェイスを継承したクラスを、IServerChannelSinkProviderのCreateSinkメソッドで返えすように実装して、HttpServerChannelのnewの引数に渡して実行する。
HTTPリクエストが呼ばれるとIServerChannelSinkのProcessMessageが呼ばれるので、そこにHTTPヘッダーとCONTENTSが渡される。
これで自分で、HTTPプロトコルの独自実装ができる。
