Erlang并发编程(二) --- Web服务

来源:互联网 发布:包装设计 知乎 编辑:程序博客网 时间:2024/05/16 15:20

使用Erlang来创建一个Web服务。

从简单的echo service开始:当访问该服务时,返回服务器端当前的系统时间。

-module(hello).-export([start/1]).start(Port) ->    spawn(fun () -> {ok, Sock} = gen_tcp:listen(Port, [{active, false}]), loop(Sock) end).loop(Sock) ->    {ok, Conn} = gen_tcp:accept(Sock),    Handler = spawn(fun () -> handle(Conn) end),    gen_tcp:controlling_process(Conn, Handler),    loop(Sock).handle(Conn) ->gen_tcp:send(Conn, response()),    gen_tcp:close(Conn).response() ->{{Y, M, D}, {H, I, S}} = calendar:local_time(),B = iolist_to_binary(lists:concat([Y, "-", M, "-", D, " ", H, ":", I, ":", S])),iolist_to_binary(io_lib:fwrite("HTTP/1.0 200 OK\nContent-Type: text/html\nContent-Length: ~p\n\n~s", [size(B), B])).

编译和启动服务:

1>C(hello).

2>hello:start(1234).

然后可以通过如下网址访问:

http://localhost:1234/


当然,为了简洁,我们还可以适当的改写response方法如下:

response() ->{{Y, M, D}, {H, I, S}} = calendar:local_time(),    iolist_to_binary(io_lib:format("~p-~p-~p ~p:~p:~p", [Y, M, D, H, I, S])).

原创粉丝点击