-module(hello).
-export([start/2]).
start(Port, Doc) ->
spawn(fun () -> {ok, Sock} = gen_tcp:listen(Port, [{active, false}]), loop(Sock, Doc) end).
loop(Sock, Doc) ->
{ok, Conn} = gen_tcp:accept(Sock),
Handler = spawn(fun () -> handle(Conn, Doc) end),
gen_tcp:controlling_process(Conn, Handler),
loop(Sock, Doc).
handle(Conn, Doc) ->
{ok, Data} = file:read_file(Doc),
gen_tcp:send(Conn, response(binary_to_list(Data))),
gen_tcp:close(Conn).
response(Str) ->
B = iolist_to_binary(Str),
iolist_to_binary(
io_lib:fwrite(
"HTTP/1.0 200 OK\nContent-Type: text/html\nContent-Length: ~p\n\n~s",
[size(B), B])).
Erlang实现的简易HTTP服务器
最新推荐文章于 2021-11-04 19:40:29 发布