แฃแแแ แแแฎแ แแแแ แแแฃแจแแแ แแ แแแฅแขแแ แกแแฎแแแฌแแแแแแ โแแแแแชแแแแ แแแชแแแกแ แแ แแแ แแแแก แแแกแขแ แฃแแแแขแแแแก แจแแแฃแจแแแแแ แกแแแแแแ แแแ แแ แแแแฃแกแขแ แแฃแ แกแแฅแขแแ แแแจแ แแแแแฉแแแแแ แแแคแฃแซแแแแฃแแโ.
แแฎแแ แแแแแ แแแแฎแ แแ แ แแแแ แแแแแฌแงแ แแก แแ แแแฅแขแ แแ แแฎแแ แแแขแแแฃแ แแ แแฆแแฌแแ แแ แแแ แแแแก แแแแก.
แแก แแ แแก แกแขแแขแแแแแก แกแแ แแแก แแแ แแแแ แกแขแแขแแ. แแฅ แแ แแฆแแฌแแ แกแแ แแแ แก แแ แแ แแขแแแแแก. แกแแแแแแแแแแจแ, แแแแแฎแแแแก แจแแฃแซแแแ แแแฌแแ แแก แแ แแแแแฉแแแแแก แแแแแแแขแแแแก แกแแแฃแแแ แ แแแ แกแแแแแช.
แแแกแฃแ แฌแแแก, Digital Breakthrough-แแก แฐแแแแแแแแ, แแแ แแแฃแฉแแแแ แแแแ, แจแแแฅแแแแ แกแแกแแ แแแแแ แกแแกแขแแแ แแแแฃแกแขแ แแแกแแแแก แแ แชแแคแ แฃแแ แแแแแแแแแแกแแแแก, แแแแแฌแแแแแฃแแ แฌแแแแแก แขแแฅแแแแแแแแก แแแแแงแแแแแแ; แแกแแแ แแแชแแแฃแแ แแงแ แแ แแแขแ แแแแแแแแ แแแแกแแแแก แแแแแแชแแแแแก แแแฎแแแ แแแแก แคแแแแแก แแแแ (แชแแแแ แฃแแแ แแแแฌแแ แ. แกแขแแขแแ แแ แแแขแแก แจแแกแแฎแแ, แแแแแแแก, แแแแช แแฎแแแฎแแ แแฌแงแแแก แกแขแแ แขแแแแแแก แแแแแแแก) แแ แแฎแแ แฌแแกแ แแแจแ.
แแแแแแแแ แแแ แฎแแแแ Go แแแแแ แแ แแแแแชแแแแ แแแแ, แ แแแแแจแแช แแแแแแแ แแแแฎแแแ แแ แแก LevelDB.
แซแแ แแแแแ แแแฌแแแแแแ แแ แแขแแแแแ, แกแแ แแแ แ (แ แแแแแแช แแฃแจแแแแก TCP แแ WebSocket - แแแ แแแแ แแแแแฉแแแแแก แกแแแฅแ แแแแแแชแแแกแแแแก, แแแแ แ แแแแแแขแแแแก แแแกแแแแแจแแ แแแแแ, แขแ แแแแแฅแชแแแแแก แแ แแ แซแแแแแแแแก แแแแแแแแแกแแแแก, แแแแแแแแแ, JavaScript-แแแ.
แ แแแแ แช แแฆแแแแจแแแ, แแก แแแแแฉแแแแ แแแ แแแ แ แแแจแ แกแแญแแ แแ แแแแฌแแแแแแแแกแ แแ แแแแฎแแแ แแแแแแก แจแแ แแก แแ แแแฃแฅแชแแแก แแแชแแแแก แแแขแแแแขแแแแชแแแกแ แแ แแแกแแชแแแแ, แแ แแ แแแ แแ แ แแแแแแแแจแ. แแก แฎแแแฎแ แแ แฉแฅแแ แแแก แแ แแแแแแแแก แแแแแแก. แแแแ แแ แแแแชแแแ แแ แแ แแก แแฎแแแแ "แฉแแแแก แฌแแแแแก" แจแแฅแแแ แฉแแจแแแแแฃแแ แแแแแฃแแแขแแ แแ, แแ แแแแ แกแแกแขแแแ, แ แแแแแแช แแแขแแแแขแแแแ แแแก แ แฃแขแแแฃแแ แแแแชแแแแแแก แฃแแแขแแกแแแแก, แ แแแแแแแช แฌแแ แแแแฅแแแแแ แแ แแแฃแฅแขแแก แกแแกแแชแแชแฎแแ แชแแแแแแ แแฃแจแแแแแกแแก. แแแแขแแแแแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแ แกแแแแแฎแแ, แ แแแแ แช แฉแแแฃแแ แแแแแฉแแแแแแแกแแแแก, แแแแฎแแแ แขแ แแแแแฅแชแแแแแก แจแแงแแแแแแกแ แแ แแแแแแแแแแแแจแ (แแแแแแ แขแ แแแแแฅแชแแแแ แแแแฎแแแ แแแแแแแจแ, LevelDB แแแแแแแ แฌแแแแกแฌแแ แแแจแแคแ แฃแแแ GOB แคแแ แแแขแจแ). แแแ แแแ แ แแแจแ, แแแแแ แแแกแแฃแแ แแ แแ แแขแแแแแแ แแ แกแแ แแแ แแ (aka node).
แแ แแขแแแแแ แแ แแ แแก แ แแฃแแ, แแแกแ แแแแแ แแแแแแแ แแแแแแแแแก แแแ แแแแฃแแ แแแแแชแแแแแแก แฉแแขแแแ แแแแก แ แแแแแจแ, แ แแแแ แช แฌแแกแ, แแแแแ แแ แขแ แแแแแฅแชแแ, แกแแแชแแแแฃแ แ แแ แซแแแแแแก แฎแแแแก แกแแแแกแฃแฎแแ, แแกแแแ แกแแญแแ แแ แแแแแแขแแ แแก แแแชแแแแกแแแแก, แ แแแ แแแแแซแแ แแชแแแแก แแแ แแ แแก. แแ แแก แแแแแแจแแ แแแฃแแ แแ แ แแแแ แฃแแแ แแแแแแแแ แแกแแแ (แกแแแฅแ แแแแแแชแแแก แกแแกแแแกแแแแก แแแแแแจแแ แแแฃแ แแแแแซแแแก แแกแแแ แฃแฌแแแแแแ "แแแแแแแแก", แ แแแแแ แแแแ IP แชแแแแแแแ แแ แแแแ แแแแแแแ แแแแแก แแแแแชแแแแแ แแแแฎแแแ แแแฎแกแแแ แแแแจแ).
แกแแฅแแฆแแแแแแแก (แกแแฅแแฆแแแแแแแก, แ แแแแ แช แแแแฃแฅแกแ แฃแฌแแแแแก แแแ) Go แแ แแแ แแแแกแขแแแแก แแแแแแแ แฃแฌแแแแแแ แแแแแขแแแก, แแแแขแแ แงแแแแแ แคแแแแแก แแแกแแฌแงแแกแจแ Go แแแแแ แแ แแแ แแฅแขแแ แแแจแ แแกแแแ แฌแแ แแ แแแแแขแ folder_name_where_this_file แแแแแแ แแแแก. แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แแฅแแแ แแแ แจแแซแแแแ แแแแแขแแก แแแฌแแแแแแก แจแแแแแแแแแก. แแกแ, แแก แแ แแ แแก แกแแแแฃแแแ แแแแแแแก, แแแแช แแชแแก แแก แแแ. แแก แแ แแก แแแแแขแแแ:
- แฅแกแแแฃแ แ แแแแฃแแแแแชแแ (แกแแ แแแ แ, แแแแแแขแ, แแ แแขแแแแแ)
- แจแแแแฎแฃแแ แแ แแแแแชแแแฃแแ แแแแแชแแแแแแก แกแขแ แฃแฅแขแฃแ แแแ (แแแแแ, แขแ แแแแแฅแชแแ)
- แแแแแชแแแแ แแแแ (แแแแแฉแแแแ)
- แแแแกแแแกแฃแกแ
- แแแฌแงแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแ (xvm)
- แแแแฎแแแ แ (แแ แแแขแ, แขแแแแแ) แแก แงแแแแแคแแ แ แฏแแ แฏแแ แแแแ.
แแก แแ แแก แกแแแแแแแแแแแแแแ แแแ แกแแ, แแแก แแแแแ แแแขแแ แแ แแชแแกแแก แฃแ แแแแ แแฅแแแแแแ แแ แ แแแแแแแแ แแฅแกแแแ แแแแแขแฃแแ แแแแแแแแแขแ, แแแแ แแ แกแขแ แฃแฅแขแฃแ แ แจแแแกแแแแแแแ แแ แกแขแ แฃแฅแขแฃแ แแก, แ แแแแแแแช แแแแแแแแ แแแแก แแแแแแแแ แแแ. แแฃ แ แแแ แแแฅแแ แจแแแแแแแแแแแฃแแ แแแแแแขแแ แแแจแ, แกแแแแแแแแแแ แแแแแแแแแแกแฌแแแแ แแแก แจแแแแแแ แแแแแแแแ แแแแจแ. แแฎแแ แแ แกแแ แแแ แแก แแฎแกแแ แแ แแฅแแ.
แฏแแ แกแแ แแแ แก แแแแแแฎแแแแ.
แกแแ แแแ แแก แฅแแแแ แแแ แแแ แแแฅแแแแแแก แ แแแแ แช แแแแแชแแแแ แกแแ แแแ แ, แ แแแแแแช แแฃแจแแแแก 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