рдкрд░рд┐рдЪрдп
Trapexit рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ "рдУрдЯреАрдкреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг" рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдУрдЯреАрдкреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЖрдпрд╛ред рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ prim_inet рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЕрдЪреНрдЫреЗ рдпрд╛ рдмреБрд░реЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╛рд░реНрд╢рдирд┐рдХ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреБрдЫ "рдмреИрд╕рд╛рдЦреА" рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдореИрдВ рд╕рд┐рджреНрдз рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЗрдЦ рдореЗрдВ рднреА, рд▓реЗрдЦрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ: "
prim_inet рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП inet рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред рдЬрдмрдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдкреНрд░рд▓реЗрдЦрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдУрдЯреАрдкреА рдЯреАрдо рдореБрдХреНрдд рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдПрдВрдЧреЗ [1]ред "
рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛, рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ FSM рдХреЛ рдХрд┐рд╕реА рднреА рдЕрд╡рд░реЛрдзрдХ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди, рдкреБрдирдГ рдЖрд░рдВрдн, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд┐рдирд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ [2]редрдКрдкрд░ рдХреА рдХрддрд░рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде), рдпрджрд┐ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд░ рд╡рд╣рди рдХрд░рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди "рдЦреАрдВрдЪрд╛ рдЬрд╛рдирд╛" рд╣реЛрддрд╛ рд╣реИ), FSM рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддреБ рд╕рдВрдмрдВрдзреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЕрд╡рд░реБрджреНрдз рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрдп рд╕реБрдирдирд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рдЙрд╕рдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдпрджрд┐ рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдкрд░ рдЗрд╕реЗ рдЬрдмрд░рди рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдирд╣реАрдВ рд╕рд╣реА рдЕрдзрд┐рдХрд╛рд░)ред рдЬрдм рдХреЛрдб рдХреЛ рдЧрд░реНрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдВрдЪрд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреМрди рд╕реА рд░реЗрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА)ред
рд╣рдо рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд▓реЗрдЦрд┐рдд рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕рд░реНрд╡рд░ рд╕рдВрд░рдЪрдирд╛
рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрд╡рд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд┐рддреНрд░ 1
1. application_master: main_loop / 2
2. application_master: loop_it / 4
рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди_рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднреМрддрд┐рдХ рд╕реНрддрд░ рдкрд░ рджреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрдирддреА рд╣реИрдВред рдПрдкреНрд▓реАрдХреЗрд╢рди рдорд╛рд╕реНрдЯрд░ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХрд╛ рдиреЗрддрд╛ рд╣реИред
3. рд╣рдорд╛рд░реЗ рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ) рдХреЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ
4. рд╢реНрд░реЛрддрд╛ (gen_server), рд╢реНрд░реЛрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░рдирд╛ (рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛)
5. рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ (рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ)
6. рд╢реНрд░реЛрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛)
7. рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ (gen_fsm)
рд╕реНрд░реЛрдд рдХреЛрдб
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ tcp_listener рдореЙрдбреНрдпреВрд▓ рдФрд░ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
-module(tcp_listener). -behaviour(gen_server). -export([start_link/1]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). -export([accept_func/1]). -define(SERVER, ?MODULE). 1. -define(LOGIC_MODULE, tcp_fsm). 2. -record(state, { listener, %% Listening socket module %% FSM handling module }). start_link(Port) -> gen_server:start_link({local, ?SERVER}, ?MODULE, [Port], []). init([Port]) -> Options = [{packet, raw}, {active, once}, {reuseaddr, true}], case gen_tcp:listen(Port, Options) of {ok, LSocket} -> %% Create first accepting process 3. spawn_link(?MODULE, accept_func, [LSocket]), {ok, #state{listener = LSocket, module = ?LOGIC_MODULE}}
1. рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдореИрдХреНрд░реЛред
2. рдЬреАрди-рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ред
3. рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ "рд╕реБрдиреЛ" рд╣реЛрдЧреАред
4. рд╣рдо рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
5. рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП gen_fsm (tcp_fsm рдореЙрдбреНрдпреВрд▓) рдмрдирд╛рдПрдВред
6. рдЪрд░рдг 5 рдореЗрдВ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓реЗрдВред
7. рд╣рдо рд╕реЙрдХреЗрдЯ рдХреЛ tcp_fsm рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
8. рд╣рдо рдлрд┐рд░ рд╕реЗ "рд╕реБрдирдирд╛" рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг
(emacs@host)2> make:all().
рдирд┐рд╖реНрдХрд░реНрд╖
рдирддреАрдЬрддрди, рд╣рдордиреЗ рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ "рдЬреИрд╕реЗ рдХрд┐" рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд╡рд░реБрджреНрдз рд░рд╣рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрдп рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдирд╛ рд╣реИред рдЖрдк рд╕реНрд╡рдпрдВ tcp_listener рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрдХрд░ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ / рд╢реБрд░реВ рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВ)ред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд╣рдордиреЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╣рдореЗрдВ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
- рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд╡рд░реБрджреНрдз рд░рд╣рддреА рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рд╣рдорд╛рд░реЗ рдУрдЯреАрдкреА рдЖрд╡реЗрджрди рдореЗрдВ, рдУрдЯреАрдкреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред
- рдпрджрд┐ рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ (tcp_listener рдореЙрдбреНрдпреВрд▓ рдореЗрдВ accept_func / 1), рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ tcp_listener рднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ tcp_listener рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ accept_func / 1 рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред
рдпреЗ рджреЛрдиреЛрдВ рдордВрддреНрд░рд╛рд▓рдп рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдгрдп рд╣реИред рдпрд╣рд╛рдБ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдп рд╣реИрдВ:
1. рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рд╕реБрдирдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдкрд░ tcp_urtener рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рди рд╣реЛ (accept_func / 1)?
2. OTP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдбрд╛рдЙрдирд▓реЛрдб
рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
рдЬреАрдердм рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?
1.
рдУрдЯреАрдкреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг2.
рдУрдЯреАрдкреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдмрдирд╛рдирд╛3.
рдПрд░реНрд▓рд╛рдВрдЧ рдкреНрд░рд╢реНрди рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА ~ prim_inet4.
рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд▓реЗрдЦрди5.
рдПрд░реНрд▓рд╛рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ