Erlang实现的简易HTTP服务器

来源:互联网 发布:网络清洁器 编辑:程序博客网 时间:2024/05/22 08:27
-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])).

0 0