轉自http://coderplay.javaeye.com/blog/93403
1. -module(echo_server).
2. -export([start/0,stop/0]).
3.
4. -define(LISTEN_PORT,12345). % 開放端口
5. -define(MAX_CONN, 5000). % 最大連接數
6.
7. start() ->
8. process_flag(trap_exit, true), % 設置退出陷阱
9. tcp_server:start_raw_server(?LISTEN_PORT,
10. fun(Socket) -> socket_handler(Socket,self()) end,
11. ?MAX_CONN,
12. 0).
13.
14. %% 處理數據
15. socket_handler(Socket,Controller) ->
16. receive
17. {tcp, Socket, Bin} ->
18. gen_tcp:send(Socket, Bin); % echo
19. {tcp_closed, Socket} ->
20. ok;
21. _ ->
22. socket_handler(Socket,Controller)
23. end.
24.
25. stop() ->
26. tcp_server:stop(?LISTEN_PORT).
基于Joe Armstrong 的tcp_server模塊來做的, 試試先 :)
編譯
erl -noshell -s make all -s init stop
運行
erl -noshell -sname coderplay -s echo_server start
posted on 2009-09-14 12:24
暗夜教父 閱讀(410)
評論(0) 編輯 收藏 引用 所屬分類:
erlang