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

使用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])).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值