рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХрдЪреЗрди рд╡рд┐рдХрд╛рд╕ред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рдЕрдм рдЪрд╛рд░ рдорд╣реАрдиреЗ рд╕реЗ рдореИрдВ "рдмреНрд▓реЙрдХрдЪреЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдХрд╛рд░реА рдФрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕" рдирд╛рдордХ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХрдЪреЗрди рд╡рд┐рдХрд╛рд╕ред рднрд╛рдЧ ---- рдкрд╣рд▓рд╛

рд▓реЗрдЦреЛрдВ рдХреА рд╢реГрдВрдЦрд▓рд╛ рдореЗрдВ рдпрд╣ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рдардХ рдЗрди рдмреНрд▓реЙрдХрдЪреЗрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдпрд╣рд╛рдБ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИ - рдмреНрд▓реЙрдХрдЪреЗрди рдФрд░ рд▓реЗрдирджреЗрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рд╛рде рд╣реА рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдбрд┐рдЬрд┐рдЯрд▓ рдмреНрд░реЗрдХрдереНрд░реВ рд╣реИрдХрдереЙрди рдореЗрдВ, рд╡реЗ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдЬрд░ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓реЗрдХрд░ рдЖрдП; рдЗрдиреЛрд╡реЗрд╢рди рдЕрд╕рд┐рд╕реНрдЯреЗрдВрд╕ рдлрдВрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрджрд╛рди рднреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП) рдЕрдиреБрджрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдФрд░ рдЕрдм рдХреНрд░рдо рдореЗрдВред

рд╡рд┐рдХрд╛рд╕ рдЧреЛ рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рд╡рд╣ рд▓реЗрд╡рд▓рдбреАрдмреА рд╣реИред
рдореБрдЦреНрдп рднрд╛рдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВ, рд╕рд░реНрд╡рд░ (рдЬреЛ рдЯреАрд╕реАрдкреА рдФрд░ рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ - рдкрд╣рд▓рд╛ рдмреНрд▓реЙрдХрдЪреЗрди рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд▓реЗрдирджреЗрди рдФрд░ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдмреНрд▓реЙрдХрдЪреЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ, рдпрд╛ рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпреЗ рд▓реЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреЗред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде "рдЪреЗрдХрдмреБрдХ" рдмрдирд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рдж рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрд╛рдЗрдЯрдХреЛрдб, рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд▓реЙрдХрдЪреЗрди рдХреЗ рд╕рд╛рде рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рд▓реЗрдирджреЗрди рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдирджреЗрди рд╕реНрд╡рдпрдВ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрд╡рд▓рдбреАрдмреА рдореЗрдВ рдмреНрд▓реЙрдХ рдЬреАрдУрдмреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░реНрд╡-рдПрдиреНрдХреЛрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ)ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рд╕рд░реНрд╡рд░ (рдЙрд░реНрдл рдиреЛрдб) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмреНрд▓реЙрдХ рдпрд╛ рд▓реЗрдирджреЗрди рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрд╛рдХрд┐ рдиреЛрдб рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдпрд╣ рдХреМрди рд╣реИ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд░рдирд╛ рд╣реИ (рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реЗ рдиреЛрдбреНрд╕ рдХреЛ "рдкрдбрд╝реЛрд╕реА" рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЖрдИрдкреА рдЬреНрдЮрд╛рдд рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд░рд╛рдЬреНрдп рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ)ред

рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреА рд╕рдордЭ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ (рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдЙрдиреНрд╣реЗрдВ рдХрд╣рддрд╛ рд╣реИ) рдХреЛ рдкреИрдХреЗрдЬ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЧреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡реЗ рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░_рдирд╛рдо_рдЬрд╣рд╛рдВ_рдпрд╣_рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкреИрдХреЗрдЬ рдлрд╝реАрдб рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЦреИрд░, рдпрд╣ рднрд╛рд╖рд╛ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИред рдпреЗ рдкреИрдХреЗрдЬ рд╣реИрдВ:

  • рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░ (рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓)
  • рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛рдПрдВ (рдмреНрд▓реЙрдХ, рд▓реЗрдирджреЗрди)
  • рдбреЗрдЯрд╛рдмреЗрд╕ (рдмреНрд▓реЙрдХрдЪреЗрди)
  • рд╕рд░реНрд╡рд╕рдореНрдорддрд┐
  • рд╕реНрдЯреИрдХреНрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (xvm)
  • рд╕рд╣рд╛рдпрдХ (рдХреНрд░рд┐рдкреНрдЯреЛ, рдкреНрд░рдХрд╛рд░) рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред

рдпрд╣рд╛рдБ github рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ

рдпрд╣ рдПрдХ рд╢реИрдХреНрд╖рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрдВрддрд░-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдФрд░ рдХрдИ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрдирд╛ рдЙрд╕реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдФрд░ рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.

рдЖрдЗрдП рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рджреЗрдЦреЗрдВред

рд╕рд░реНрд╡рд░ рд╕рдмрд░реВрдЯреАрди рдПрдХ рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреИрдХреЗрдЬ рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреАрд╕реАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред

рд░реВрдЯреАрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рд╕рд░реНрд╡рд░, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдкреНрд░рдХрд╛рд░. рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реА tcp_server.go рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдкрд░реЛрд╕реЗрдВ.

type Serve struct {
	Port string
	BufSize int
	ST *types.Settings
}

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

  • рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓
  • рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реИрдЧ рдХрд░реЗрдВ (рдирд┐рдЬреА рдмреНрд▓реЙрдХрдЪреЗрди)

рдкреНрд░рдЧрддрд┐:

  • JSON рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрдврд╝рддрд╛ рд╣реИ
  • рдбрд┐рдмрдЧ рдореЛрдб рдлрд╝реНрд▓реИрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ: рдпрджрд┐ рдпрд╣ рд╕реЗрдЯ рд╣реИ, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмреНрд▓реЙрдХрдЪреЗрди рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛

рд╕рд░реНрд╡рд░

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
  • рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯ рдирдВрдмрд░, рдПрдХ рдмрдлрд░ рдЖрдХрд╛рд░ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдкреНрд░рдХрд╛рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕
  • рд░рди рд╡рд┐рдзрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддреА рд╣реИ (рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреЛрд░реНрдЯ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реБрдирдирд╛, рдЬрдм рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдХ рдирдП рдереНрд░реЗрдб рдореЗрдВ рдирд┐рдЬреА рд╣реИрдВрдбрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ)
  • ╨Т рд╕рдВрднрд╛рд▓рдирд╛ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдмрдлрд░ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡рд┐рдХрд▓реНрдк
  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡рд┐рдХрд▓реНрдк рд░рд┐рдЯрд░реНрди рдкрд░рд┐рдгрд╛рдо рдпрд╛ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ. рдкрд░рд┐рдгрд╛рдо рдлрд┐рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡реНрдпрд╛рдЦреНрдпрд╛рдЬреЛ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ intrpr - рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ, рдпрд╛ рдЪрдпрди рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
  • рдлрд┐рд░ рд╕реНрд╡рд┐рдЪ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ intrpr.рдХрдорд╛рдВрдб[0] рдЬреЛ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ: рдкрд░рд┐рдгрд╛рдо, рдЖрдордВрддреНрд░рдг, рддреНрд░реБрдЯрд┐ рдФрд░ рдПрдХ рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЪреВрдХ
  • рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд┐рдЪ рдорд╛рди рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ intrpr.рдХрдорд╛рдВрдб[1] рдЬреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдмрдлрд╝рд░рд▓реЗрдВрде ╨╕ рд╕рдВрд╕реНрдХрд░рдг (рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

рдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ╨╕ рдмрдлрд╝рд░рд▓рдВрдмрд╛рдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ srvlib.go рд╕рд░реНрд╡рд░ рдкреИрдХреЗрдЬ

GetVersion(conn net.Conn, version string)

рдпрд╣ рдмрд╕ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ:

conn.Write([]byte("result:" + version))

.
рд╕рдорд╛рд░реЛрд╣

BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)

рдХрд┐рд╕реА рдмреНрд▓реЙрдХ, рд▓реЗрди-рджреЗрди, рдпрд╛ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ:

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
    fmt.Println("DataType:", intrpr.Commands[2])
  • рдорд╛рди рдкрдврд╝рддрд╛ рд╣реИ рдЗрдВрдЯреНрд░рдкреНрд░.рдмреЙрдбреА рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░ рдХреЗ рд▓рд┐рдП buf_len
  • рдПрдХ рдмрдлрд╝рд░ рдмрдирд╛рддрд╛ рд╣реИ рдиреНрдпреВрдмрдл рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░:
    make([]byte, buf_len)
  • рдареАрдХ рдЙрддреНрддрд░ рднреЗрдЬрддрд╛ рд╣реИ:
    conn.Write([]byte("result:ok"))
  • рд░реАрдб рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдмрдлрд╝рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░ рджреЗрддрд╛ рд╣реИ:
    io.ReadFull(conn, newbuf)

    .

  • рдмрдлрд╝рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ
    fmt.Println(string(newbuf))

    рдФрд░ рдкрдврд╝реЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛

    fmt.Println("Bytes length:", n)
  • рдареАрдХ рдЙрддреНрддрд░ рднреЗрдЬрддрд╛ рд╣реИ:
    conn.Write([]byte("result:ok"))

рдкреИрдХреЗрдЬ рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкреИрдХреЗрдЬ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.

рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрдХ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдХрд▓реНрдк (str рд╕реНрдЯреНрд░рд┐рдВрдЧ) (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддреНрд░реБрдЯрд┐) рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рджреБрднрд╛рд╖рд┐рдпрд╛:

  • рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣реЗрдб рдФрд░ рдмреЙрдбреА рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ReqParseN2(str)
  • рд╣реЗрдб рдХреЛ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ ReqParseHead(head) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ
  • ╨Т рд╕реНрд╡рд┐рдЪ(рдЖрджреЗрд╢[0]) рдкреНрд░рд╛рдкреНрдд рдЖрджреЗрд╢ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рд╕реАрдПрдордбреА, рдХреБрдВрдЬреА, рдкрддрд╛ рдпрд╛ рдЕрдиреБрднрд╛рдЧ рдЪрд╛рд▓реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЪреВрдХ)
  • Cmd рдореЗрдВ 2 рдХрдорд╛рдВрдб рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ рд╕реНрд╡рд┐рдЪ(рдХрдорд╛рдВрдб[1])- рд▓рдВрдмрд╛рдИ ╨╕ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ.
  • рд▓рдВрдмрд╛рдИ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдЖрджреЗрд╢[2] рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реИ рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░
  • рдЙрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИ
    len(body) < 1
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
    "result:bufferlength:" + datatype + "/" + body
  • рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
    return "result:version/auto"

рджреБрднрд╛рд╖рд┐рдпрд╛

рдЗрд╕рдореЗрдВ InterpreteData рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рджреНрд╡рд┐рддреАрдпрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддрд╛ рд╣реИ рдЪреБрдирд╛рд╡ рддрд╛рд░ рдФрд░ рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ.

type InterpreteData struct {
	Head string
	Commands []string
	Body string
	IsErr bool
	ErrCode int 
	ErrMessage string
}

рд╕рдорд╛рд░реЛрд╣

Interprete(str string) (*InterpreteData, error)

рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ.

рдкреНрд░рдЧрддрд┐:

  • рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдЪреБрдирд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд░ рдФрд░ рд╢рд░реАрд░ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ ReqParseN2(str)
  • рд╕рд┐рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ReqParseHead(рд╕рд┐рд░)
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд░рдВрднреАрдХреГрдд рд╣реИ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рд╕реВрдЪрдХ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

res := &InterpreteData{
	Head: head,
	Commands: commands,
	Body: body,
}
return res, nil

рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕рд░реНрд╡рд░.рдЧреЛ рдкреИрдХреЗрдЬ рдореБрдЦреНрдп.

рдЧреНрд░рд╛рд╣рдХ

рдХреНрд▓рд╛рдЗрдВрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЯреАрд╕реАрдкреАрдХрдиреЗрдХреНрдЯ ╨╕ рдЯреАрд╕реАрдкреАрд░реЗрд╕реНрдкреЙрдиреНрд╕рдбреЗрдЯрд╛.

рд╕рдорд╛рд░реЛрд╣

TCPConnect(s *types.Settings, data []byte, payload []byte)

рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • рдкрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
    net.Dial("tcp", s.Host + ":" + s.Port)
  • рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
    conn.Write(data)
  • рдЙрддреНрддрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
    resp, n, _ := TCPResponseData(conn, s.BufSize)

    рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛

    fmt.Println(string(resp[:n]))
  • рдпрджрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рдкреЗрд▓реЛрдб рдлрд┐рд░ рдЙрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ
    conn.Write(payload)

    рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ

рд╕рдорд╛рд░реЛрд╣

 TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)

рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмрдлрд╝рд░ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдмрдлрд╝рд░ рдФрд░ рдкрдврд╝реЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдПрдХ рддреНрд░реБрдЯрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдмрд░реВрдЯреАрди

рдиреЛрдб рд╕рд░реНрд╡рд░ рдкрд░ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдБрдХрдбрд╝реЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛, рдкреЗрд▓реЛрдб рдкрд░ рднреЗрдЬреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рдиреЛрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрдореНрдпреВрд▓реЗрд╢рди рдлрд╝реНрд▓реИрдЧ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ред

  • рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
    st := types.ParseConfig(*config)
  • рдпрджрд┐ рдПрдореБ рдзреНрд╡рдЬ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд╕рдордпрдмрджреНрдзрдХ
  • рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ f рдзреНрд╡рдЬ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ FDB рдФрд░ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬ рджреА рдЬрд╛рддреА рд╣реИ
    client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
  • рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдзреНрд╡рдЬ рд╕реЗ рдбреЗрдЯрд╛ рдмрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ -d:
    client.TCPConnect(st, []byte(*data), nil)

рдпрд╣ рд╕рдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред

рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдмреНрд▓реЙрдХ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, 3 рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, 4 рдореЗрдВ рдореИрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛, рдлрд┐рд░ рдПрдХ рд╕реНрдЯреИрдХ рдорд╢реАрди рдЬреЛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдФрд░ рд╕реЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреА рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд▓ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ