Erlangでechoサーバ

30分プログラム、その693。Erlangでechoサーバを作ってみた。
なにかいいネタないかなぁ、と思いつつプログラミングErlangを開いたら、ちょうどgen_tcpを解説したページだったので、Erlangでechoサーバを作ってみました。脈絡ないとか言わないで。

使い方

$ telnet localhost 5678
hoge
hoge # <- サーバからの応答

ソースコード

-module(echo).
-compile([export_all]).

start() ->
    {ok, LSock} = gen_tcp:listen(5678, [binary,
					{packet, 0},
					{active, false}]),
    server_loop(LSock).

server_loop(LSock) ->
    {ok, Sock} = gen_tcp:accept(LSock),
    spawn(fun () -> client_loop(Sock) end),
    server_loop(LSock).

client_loop(Sock) ->
    case gen_tcp:recv(Sock, 0) of
        {ok, B} ->
	    gen_tcp:send(Sock,B),
	    client_loop(Sock)
    end.