Евгений Фарсалов
unread,Mar 8, 2014, 12:01:31 PM3/8/14Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to erlang-...@googlegroups.com
есть модуль. Хочу запустить его в виде демона. При запуске в эрл-шеле работает на ура. При запуске в голой консоли erl -s server listen выбивает ошибку. Типо не может подключиться к сокету...
-module(server).
-export([listen/1]).
-define(TCP_OPTIONS, [binary, {packet, 0}, {active, false}, {reuseaddr, true}]).
% Call echo:listen() to start the server.
listen(Port) ->
{ok, LSocket} = gen_tcp:listen(Port, ?TCP_OPTIONS),
spawn_link(fun() -> accept(LSocket) end).
% Wait for incoming connections and spawn a process that will process incoming packets.
accept(LSocket) ->
{ok, Socket} = gen_tcp:accept(LSocket),
Pid = spawn_link(fun() ->
io:format("Connection accepted ~p ~n", [Socket]),
loop(Socket)
end),
gen_tcp:controlling_process(Socket, Pid),
accept(LSocket).
% Echo back whatever data we receive on Socket.
loop(Sock) ->
inet:setopts(Sock, [{active, once}]),
receive
{tcp, Socket, Data} ->
D=erlang:binary_to_list(Data),
io:format("Got packet: ~p~n", [D]),
%io:format("Test: ~p~n", [[$c,13,10]]),
if
D == [$c,13,10] -> exit(self(), ok) , io:format("test ok ~p~n", [[$u]]);
true -> gen_tcp:send(Socket, Data),
loop(Socket)
end;
{tcp_closed, Socket}->
io:format("Socket ~p closed~n", [Socket]);
{tcp_error, Socket, Reason} ->
io:format("Error on socket ~p reason: ~p~n", [Socket, Reason])
end.