2

下面是解释如何使用的一个示例的一部分gen_tcp。然而,几乎所有的教程都只会向您展示一个回显服务器,但没有人会解析真实世界的 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;

我很好奇如何解析 Erlang 中接收到的数据gen_tcp:recv/\[2,3\]。我浏览了代码,lib/inets-5.7.1/src/http_server但模块太多,我仍然无法弄清楚解析 HTTP 请求的基础知识是什么。

谁能告诉我如何解析 HTTP 请求,以及 Web 框架采用什么方法?谢谢~

4

1 回答 1

4

Erlang 有几个轻量级的 Web 服务器库,包括:

还有Yaws,它更能与Apache相媲美。我建议查看 Cowboy 的代码,因为它非常模块化。

可以在这里找到回答您问题的捷径:

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

于 2012-05-05T18:22:10.537 回答