-module(test). -export([start/1, loop/1, test/1]). % Simple socket driver. start([Port]) -> start(list_to_integer(Port)); start(Port) -> case gen_tcp:listen(Port, [list,{reuseaddr,true},{packet,0}]) of {ok, LSock} -> spawn_link(?MODULE, loop, [LSock]); Other -> io:fwrite("Can't listen to socket: ~p~n", [Other]) end. loop(LSock) -> case gen_tcp:accept(LSock) of {ok, Socket} -> Pid = spawn(?MODULE, test, [Socket]), gen_tcp:controlling_process(Socket, Pid), loop(LSock); {error, closed} -> io:fwrite("Listen socket closed~n", []); Other -> io:fwrite("Can't accept socket: ~p~n", [Other]), loop(LSock) end. test(Socket) -> gen_tcp:send(Socket, "hello!\n"), gen_tcp:close(Socket), exit(normal).