แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Go-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แฒœแƒแƒฌแƒ˜แƒšแƒ˜ 1

แƒฃแƒ™แƒ•แƒ” แƒแƒ—แƒฎแƒ˜ แƒ—แƒ•แƒ”แƒ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒกแƒแƒฎแƒ”แƒšแƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— โ€žแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒชแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒกแƒแƒ›แƒ—แƒแƒ•แƒ แƒแƒ‘แƒ แƒ“แƒ แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒฃแƒš แƒกแƒ”แƒฅแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜โ€œ.
แƒแƒฎแƒšแƒ แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒ˜แƒ—แƒฎแƒ แƒแƒ— แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ” แƒ”แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ“แƒ แƒแƒฎแƒšแƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒฆแƒ•แƒฌแƒ”แƒ  แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ™แƒแƒ“แƒก.

แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Go-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แฒœแƒแƒฌแƒ˜แƒšแƒ˜ 1

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ. แƒแƒฅ แƒ›แƒ” แƒแƒฆแƒ•แƒฌแƒ”แƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ“แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒก แƒแƒ› แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒช.

แƒ“แƒ แƒแƒ˜ แƒ›แƒ”แƒแƒ แƒ” แƒœแƒแƒฌแƒ˜แƒšแƒ˜ โ€” แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒแƒกแƒ”แƒ•แƒ” แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒกแƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒแƒก.

แƒ’แƒแƒกแƒฃแƒš แƒฌแƒ”แƒšแƒก, Digital Breakthrough-แƒ˜แƒก แƒฐแƒแƒ™แƒแƒ—แƒแƒœแƒ–แƒ”, แƒ›แƒแƒ— แƒ’แƒแƒฃแƒฉแƒœแƒ“แƒแƒ— แƒ˜แƒ“แƒ”แƒ, แƒจแƒ”แƒ”แƒฅแƒ›แƒœแƒแƒ— แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ˜แƒœแƒ“แƒฃแƒกแƒขแƒ แƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒชแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ”แƒ™แƒแƒœแƒแƒ›แƒ˜แƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ˜แƒ’แƒœแƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—; แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ’แƒ แƒแƒœแƒขแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒœแƒแƒ•แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒœแƒ“แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  (แƒชแƒแƒšแƒ™แƒ” แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ. แƒกแƒขแƒแƒขแƒ˜แƒ แƒ’แƒ แƒแƒœแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒกแƒขแƒแƒ แƒขแƒแƒžแƒ”แƒ‘แƒ˜แƒก แƒ™แƒ”แƒ—แƒ”แƒ‘แƒแƒก) แƒ“แƒ แƒแƒฎแƒšแƒ แƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒจแƒ˜.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ Go แƒ”แƒœแƒแƒ–แƒ” แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก LevelDB.
แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก TCP แƒ“แƒ WebSocket - แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒ”แƒแƒ แƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, JavaScript-แƒ“แƒแƒœ.

แƒ แƒแƒ’แƒแƒ แƒช แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”แƒ—, แƒ”แƒก แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒšแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ“แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒกแƒแƒชแƒแƒ•แƒแƒ“, แƒแƒœ แƒแƒ แƒ˜แƒ•แƒ” แƒ”แƒ แƒ— แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒจแƒ˜. แƒ”แƒก แƒฎแƒแƒšแƒฎแƒ˜ แƒแƒ  แƒฉแƒฅแƒแƒ แƒแƒ‘แƒก แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒก แƒœแƒ“แƒแƒ‘แƒแƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒชแƒแƒœแƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ "แƒฉแƒ”แƒ™แƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜แƒก" แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒšแƒ™แƒฃแƒšแƒแƒขแƒแƒ แƒ˜แƒ—, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒ˜แƒ แƒ”แƒ‘แƒก แƒ แƒฃแƒขแƒ˜แƒœแƒฃแƒšแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก. แƒ‘แƒแƒ˜แƒขแƒ”แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ› แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ”แƒ‘แƒจแƒ˜ (แƒ—แƒ•แƒ˜แƒ—แƒแƒœ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒจแƒ˜, LevelDB แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜แƒ GOB แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜). แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒแƒ— แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ–แƒ” แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” (aka node).

แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ แƒ—แƒฃแƒšแƒ˜, แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ‘แƒšแƒแƒ™แƒ˜ แƒแƒœ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ, แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ“, แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ—แƒ แƒ™แƒ•แƒแƒœแƒซแƒ›แƒ แƒ˜แƒชแƒแƒ“แƒ”แƒก แƒ•แƒ˜แƒœ แƒแƒ แƒ˜แƒก. แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ (แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒœ "แƒ›แƒ”แƒ–แƒแƒ‘แƒ”แƒšแƒก", แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒ—แƒ˜ IP แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜).

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒ”แƒ‘แƒก (แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒšแƒ˜แƒœแƒฃแƒฅแƒกแƒ˜ แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒก แƒ›แƒแƒ—) Go แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ— แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒœ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ Go แƒ™แƒแƒ“แƒ˜แƒ— แƒแƒ› แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฌแƒ”แƒ แƒ”แƒœ แƒžแƒแƒ™แƒ”แƒขแƒ˜ folder_name_where_this_file แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก. แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒก. แƒ˜แƒกแƒ”, แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒ˜แƒชแƒ˜แƒก แƒ”แƒก แƒ”แƒœแƒ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜:

  • แƒฅแƒกแƒ”แƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ (แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜)
  • แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜ (แƒ‘แƒšแƒแƒ™แƒ˜, แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ)
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ (แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜)
  • แƒ™แƒแƒœแƒกแƒ”แƒœแƒกแƒฃแƒกแƒ˜
  • แƒ“แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ (xvm)
  • แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” (แƒ™แƒ แƒ˜แƒžแƒขแƒ, แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜) แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ—.

แƒแƒฅ แƒแƒ แƒ˜แƒก github-แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒ’แƒแƒœแƒ›แƒแƒœแƒแƒ—แƒšแƒ”แƒ‘แƒšแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ›แƒแƒก แƒแƒ™แƒšแƒ˜แƒ แƒ˜แƒœแƒขแƒ”แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ˜แƒ› แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ. แƒ—แƒฃ แƒ แƒแƒ›แƒ” แƒ’แƒแƒฅแƒ•แƒ— แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜, แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ•แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘ แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒแƒจแƒ˜. แƒแƒฎแƒšแƒ แƒ™แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒฎแƒกแƒœแƒ แƒ“แƒ แƒแƒฅแƒ›แƒ˜.

แƒฏแƒ”แƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ—.

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก TCP แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ” แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒ“แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒฃแƒขแƒ˜แƒœแƒ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒแƒฅแƒ›แƒ˜, แƒกแƒแƒฎแƒ˜แƒก. แƒ—แƒแƒ•แƒแƒ“ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒแƒจแƒ˜ tcp_server.go แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก แƒ›แƒ˜แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ—.

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

แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜:

  • แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—แƒแƒช แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ
  • แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ JSON แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜
  • แƒ“แƒ แƒแƒจแƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜)

แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜:

  • แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก JSON แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœ
  • แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒ“แƒ แƒแƒจแƒ แƒ›แƒแƒฌแƒ›แƒ“แƒ”แƒ‘แƒ: แƒ—แƒฃ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ‘แƒšแƒแƒ™แƒฉแƒ”แƒ˜แƒœแƒ˜ แƒแƒ  แƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ
  • แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

Server

  • แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก TCP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒฃแƒ  แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒแƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“.
  • แƒ›แƒแƒก แƒแƒฅแƒ•แƒก Serve แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ แƒ˜แƒกแƒ’แƒแƒœ, แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ˜แƒกแƒ’แƒแƒœ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜.แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜
  • Run แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒแƒก (แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒžแƒแƒ แƒขแƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ, แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ™แƒ”แƒ แƒซแƒ แƒกแƒแƒฎแƒ”แƒšแƒฃแƒ แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ–แƒ” แƒแƒฎแƒแƒš แƒ—แƒ”แƒ›แƒแƒจแƒ˜)
  • ะ’ แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒจแƒ˜, แƒ’แƒแƒ แƒ“แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ”แƒชแƒ”แƒ›แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜.แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜
  • แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜.แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒแƒœ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ”แƒชแƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜.แƒ˜แƒœแƒขแƒ”แƒ แƒžแƒ แƒ”แƒขแƒแƒชแƒ˜แƒแƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ intrpr - แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ InterpreteData, แƒแƒœ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก แƒจแƒ”แƒ แƒฉแƒ”แƒ•แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก
  • แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ intrpr.แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜[0] แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒก: แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, inv, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒ แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ แƒžแƒแƒกแƒขแƒ˜
  • แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒจแƒ”แƒชแƒ•แƒšแƒ แƒœแƒแƒžแƒแƒ•แƒœแƒ˜แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ— intrpr.แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜[1] แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ’แƒ แƒซแƒ” ะธ แƒ•แƒ”แƒ แƒกแƒ˜แƒ (แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒซแƒแƒฎแƒ˜แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก)

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ GetVersion ะธ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ’แƒ แƒซแƒ” แƒคแƒแƒ˜แƒšแƒจแƒ˜แƒ 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])
  • แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก intrpr.แƒกแƒฎแƒ”แƒฃแƒšแƒ˜ แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒ—แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒกแƒ™แƒ”แƒœ buf_len
  • แƒฅแƒ›แƒœแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒก แƒแƒฎแƒแƒšแƒ‘แƒฃแƒคแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ–แƒแƒ›แƒ:
    make([]byte, buf_len)
  • แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก OK แƒžแƒแƒกแƒฃแƒฎแƒก:
    conn.Write([]byte("result:ok"))
  • แƒกแƒ แƒฃแƒšแƒแƒ“ แƒแƒ•แƒกแƒ”แƒ‘แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ:
    io.ReadFull(conn, newbuf)

    .

  • แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒ—แƒแƒ•แƒกแƒก แƒ™แƒแƒœแƒกแƒแƒšแƒ–แƒ”
    fmt.Println(string(newbuf))

    แƒ“แƒ แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒ˜ แƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ

    fmt.Println("Bytes length:", n)
  • แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก OK แƒžแƒแƒกแƒฃแƒฎแƒก:
    conn.Write([]byte("result:ok"))

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒ“แƒแƒœ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒแƒฅแƒ›แƒ˜.

แƒแƒฅแƒ›แƒ˜

แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒแƒจแƒ˜.

แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ (str string) (แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ) แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก, แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒฃแƒš แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ“แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒฃแƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก แƒ—แƒแƒ แƒฏแƒ˜แƒ›แƒแƒœแƒ˜:

  • แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ แƒ˜แƒงแƒแƒคแƒ แƒ—แƒแƒ•แƒกแƒ แƒ“แƒ แƒกแƒฎแƒ”แƒฃแƒšแƒ–แƒ” แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— ReqParseN2(str)
  • แƒ—แƒแƒ•แƒ˜ แƒ˜แƒงแƒแƒคแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ›แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒแƒ“ ReqParseHead(แƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ˜แƒก) แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—
  • ะ’ แƒจแƒ”แƒชแƒ•แƒšแƒ (แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜[0]) แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ (cmd, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜, แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒแƒœ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒแƒกแƒขแƒ˜)
  • 2 แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ cmd-แƒจแƒ˜ แƒจแƒ”แƒชแƒ•แƒšแƒ (แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜[1]) - แƒกแƒ˜แƒ’แƒ แƒซแƒ” ะธ แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ.
  • แƒกแƒ˜แƒ’แƒ แƒซแƒ” แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜[2] แƒ“แƒ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ˜
  • แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒแƒ›แƒแƒก แƒกแƒฎแƒ”แƒฃแƒšแƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก
    len(body) < 1
  • แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก:
    "result:bufferlength:" + datatype + "/" + body
  • แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก
    return "result:version/auto"

แƒ—แƒแƒ แƒฏแƒ˜แƒ›แƒแƒœแƒ˜

แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก InterpreteData แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก แƒ“แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒแƒ แƒแƒ“ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒกแƒ˜แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ InterpreteData.

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

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ

Interprete(str string) (*InterpreteData, error)

แƒ˜แƒฆแƒ”แƒ‘แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ“แƒ แƒฅแƒ›แƒœแƒ˜แƒก แƒ“แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒแƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ–แƒ” InterpreteData.

แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜:

  • แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒ—แƒแƒ•แƒ˜ แƒ“แƒ แƒกแƒฎแƒ”แƒฃแƒšแƒ˜ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— ReqParseN2(str)
  • แƒ—แƒแƒ•แƒ˜ แƒ˜แƒงแƒแƒคแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— ReqParseHead(แƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ˜)
  • แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ InterpreteData แƒ“แƒ แƒ›แƒแƒกแƒ–แƒ” แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ:

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

แƒ”แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ server.go แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜.

แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜

แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก TCPConnect ะธ TCPResponseData.

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ

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]))
  • แƒ—แƒฃ แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒšแƒ˜แƒ payload แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒ›แƒแƒก
    conn.Write(payload)

    แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒก, แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒก แƒ›แƒแƒก แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ

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

แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ–แƒแƒ›แƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒก, แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ˜แƒฅ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒก แƒ“แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒแƒ› แƒ‘แƒฃแƒคแƒ”แƒ แƒก แƒ“แƒ แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒ˜ แƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก, แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒก.

แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒฅแƒ•แƒ”แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ

แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ” แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ™แƒšแƒ” แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒแƒก แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒแƒก.

แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ: แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ JSON แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“, แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒกแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ“, แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ แƒ˜แƒ’แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒจแƒ, แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜.

  • แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ
    st := types.ParseConfig(*config)
  • แƒ—แƒฃ emu แƒ“แƒ แƒแƒจแƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ, แƒ˜แƒก แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒšแƒแƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜
  • แƒ—แƒฃ แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ f แƒ“แƒ แƒแƒจแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒ–แƒแƒ–แƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— แƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก fdb แƒ“แƒ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”
    client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
  • แƒ—แƒฃ แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒ แƒแƒจแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ -d:
    client.TCPConnect(st, []byte(*data), nil)

แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก. แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒ˜แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ.

แƒ›แƒ”แƒแƒ แƒ” แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ”แƒ‘แƒ–แƒ” แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ–แƒ”, 3-แƒจแƒ˜ WebSocket แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” JavaScript-แƒ“แƒแƒœ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, 4-แƒจแƒ˜ แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ• แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒ แƒ˜แƒ’แƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒ”แƒ™แƒ˜แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ‘แƒแƒ˜แƒขแƒ”แƒ™แƒแƒ“แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ, แƒ™แƒ แƒ˜แƒžแƒขแƒแƒ’แƒ แƒแƒคแƒ˜แƒ แƒ“แƒ แƒแƒฃแƒ–แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ