2012-05-05 3 views
1

私はerlangを学習しています。以下はgen_tcpの使い方の一例です。しかし、ほぼすべてのtoturialsはあなたにエコーサーバーを表示するだけで、私は本当に世界のhttp要求の解析をしていないことがわかりました。erlangがhttpリクエストを解析する方法は?

handle_connect(Socket, BinaryList, Count) -> 
    io:format("handle_connect ~p~n", [self()]), 
    case gen_tcp:recv(Socket, 0) of 
    {ok, Binary} -> 
     io:format("request is :~s~n", Binary), 
     case gen_tcp:send(Socket, Binary) of 
      ok -> 
       handle_connect(Socket, BinaryList, Count); 
      {error, Reason} -> 
       io:format("send failed~n"), 
       gen_tcp:close(Socket) 
     end; 

I gen_tcp:recvが受信したデータを解析アーランする方法について好奇心。私はlib/inets-5.7.1/src/http_serverのいくつかのコードをスキミングしましたが、あまりにも多くのモジュールがあり、私は依然としてhttp要求を解析する基本的な方向を理解できません。誰も私にHTTPリクエストを解析する方法を教えてもらえますか、それらのWebフレームワークが行ったアプローチは何ですか?おかげで〜

答えて

5

含むErlangのための軽量Webサーバのライブラリのカップルがあります。

YawsれもありますApacheに匹敵します。私はカウボーイのコードをチェックすることをお勧めします。

あなたの質問に答えるためのショートカットはここで見つけることがあります

http://www.erlang.org/doc/man/erlang.html#decode_packet-3https://github.com/extend/cowboy/blob/master/src/cowboy_http_protocol.erl#L99

関連する問題