使用纯Erlang什么是最简单的Web服务器实现,显示"hello-world"HTML页面?
erlang中有575个字符长的Web服务器.
$ cat hgolf.erl
main(_)->{ok,L}=gen_tcp:listen(36895,[]),s(L).
s(L)->{ok,S}=gen_tcp:accept(L),receive{tcp,S,"GET "++R}->[F|_]=string:tokens("/var/www"++R," "),case case file:read_file_info(F)of{ok,{_,_,regular,read,_,_,_,_,_,_,_,_,_,_}}->a;{ok,_}->"500 Server Error";_->"404 File Not Found"end of a->h(S,"200 OK\r\nContent-Type: "++case lists:reverse(F)of"lmth."++_->"text/html";"txt."++_->"text/plain";_->"application/octet-stream"end,[]),file:sendfile(F,S);E->h(S,E,E)end;_->E="405 Not Supported",h(S,E,E)end,gen_tcp:close(S),s(L).
h(S,H,B)->gen_tcp:send(S,["HTTP/1.1 ",H,"\r\n\r\n",B]).
Run Code Online (Sandbox Code Playgroud)
怎么跑
$ escript hgolf.erl
Run Code Online (Sandbox Code Playgroud)
但是,作为标准Erlang/OTP分发的一部分,还有更多功能强大的Web服务器inets.