gpt4 book ai didi

http - 如何解析带有 `gen_tcp` 的 HTTP 请求?

转载 作者:可可西里 更新时间:2023-11-01 16:52:29 27 4
gpt4 key购买 nike

下面是解释如何使用 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;

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

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

最佳答案

有几个用于 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

关于http - 如何解析带有 `gen_tcp` 的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com