ืคึฟืึทืจ ืคืืจ ืืืฉืื ืืืฆื ืืื ืืึธืื ืืจืืขืื ืืืืฃ ืึท ืคึผืจืืืขืงื ืืขืจืืคื "ืึทื ืืืืืงืืื ื ืคืื ืืึทืื ืฉืืฅ ืืื ืคืึทืจืืืึทืืืื ื ืืืฉืืจืื ืืื ืจืขืืืจืื ื ืืื ืื ืืึทืกืืจื ืกืขืงืืึธืจืก ืืืืืจื ืืืืฃ ืืืึทืงืืืืืืึทื."
ืืืฆื ืืื ืืืึธืื ืืื ืฆื ืืขืจืฆืืืื ืืืจ ืืืขืื ืืื ืืื ืกืืึทืจืืขื ืืขื ืคึผืจืืืขืงื, ืืื ืืืฆื ืืื ืืืขื ืืึทืฉืจืืึทืื ืื ืคึผืจืึธืืจืึทื ืงืึธื ืืื ืืขืืึทื.
ืืึธืก ืืื ืืขืจ ืขืจืฉืืขืจ ืึทืจืืืงื ืืื ืึท ืกืขืจืืข ืคืื โโืึทืจืืืงืืขื. ืืึธ ืืื ืืึทืฉืจืืึทืื ืื ืกืขืจืืืขืจ ืืื ืคึผืจืึธืืึธืงืึธื. ืืื ืคืึทืงื, ืื ืืืืขื ืขืจ ืงืขื ืขื ืืคืืื ืฉืจืืึทืื ืืืื ืืืืืขื ืข ืืืขืจืกืืขืก ืคืื ืื ืืืึธืงืืฉืืื ืขืืขืืขื ืื.
ืืขืฆืืข ืืึธืจ, ืืื ืื ืืืืืืึทื ืืจืืืงืืจื ืืึทืงืึทืืืึธื, ืืื ืืึธืื ืึท ืืขืืึทื ืง ืฆื ืืึทืื ืึท ื ืืฆืืง ืกืืกืืขื ืคึฟืึทืจ ืื ืืึทืกืืจื ืืื ืื ืืืืืืึทื ืขืงืื ืืืืข ืืื ืคืื ืื ืืขืจืืขืืืืื ืืขืืืฉืขืจ ืืขืื ืึธืืึธืืืข; ืึท ืฉืขื ืงืขื ืืื ืืืื ืืจืืืก ืคึฟืึทืจ ืืขืจ ืึทื ืืืืืงืืื ื ืืืจื ืื ืื ื ืึธืืืึทืืืึธื ืืืืฃ ืคืึทื ื (ืืื ืืึธื ืฉืจืืึทืื ืึท ืืึทืืื ืืขืจ ืึทืจืืืงื ืืืขืื ืื ืฉืขื ืงืขื, ืคึฟืึทืจ ืื ืืืืก ืืขื ืขื ื ืึธืจ ืกืืึทืจืืื ื ืกืืึทืจืืึทืคึผืก), ืืื ืืืฆื ืืื ืกืืจ.
ืึทื ืืืืืงืืื ื ื ืขืื ืึธืจื ืืื ืื Go ืฉืคึผืจืึทื, ืืื ืื ืืึทืืึทืืืืก ืืื ืืืึธืก ืื ืืืึทืงืก ืืขื ืขื ืกืืึธืจื ืืื LevelDB.
ืื ืืืืคึผื ืคึผืึทืจืฅ ืืขื ืขื ืื ืคึผืจืึธืืึธืงืึธื, ืื ืกืขืจืืืขืจ (ืืืึธืก ืืืืคื TCP ืืื WebSocket - ืืขืจ ืขืจืฉืืขืจ ืคึฟืึทืจ ืกืื ืืงืจืึทื ืืืืื ื ืื ืืืึทืงืืืืืืึทื, ืื ืจืืข ืคึฟืึทืจ ืงืึทื ืขืงืืื ื ืงืืืืึทื ืฅ, ืฉืืงื ืืจืึทื ืืึทืงืฉืึทื ื ืืื ืงืึทืืึทื ืื ืคึฟืื ืืืฉืึทืืืึทืกืงืจืืคึผื, ืคึฟืึทืจ ืืืึทืฉืคึผืื.
ืืื ืืขืจืืื ื, ืืขื ืืืึธืงืืฉืืื ืืื ืืคึฟืจื ืืืจืฃ ืฆื ืึธืืึทืืืื ืืื ืืึทืฉืืฆื ืื ืืืขืงืกื ืคืื ืคึผืจืึธืืืงืื ืฆืืืืฉื ืกืึทืคึผืืืืขืจื ืืื ืงืึทืกืืึทืืขืจื, ืึธืืขืจ ืืืืืข ืืื ืืืื ืืขื ืืฉ. ืื ืืขื ืืฉื ืืขื ืขื ืืื ืงืืื ืืึทืื ืฆื ืฆืืืจืื ืืขืืขืจ ืื ืืขืจืขืจ. ืึธืืขืจ ืื ืึทืจืืขื ืืื ื ืืฉื ืืืืื ืฆื ืฉืึทืคึฟื ืึท "ืืฉืขืงืืึธืึธืง" ืืื ืึท ืืขืืืื-ืืื ืงืึทืืงืืืึทืืึธืจ, ืึธืืขืจ ืึท ืกืืกืืขื ืืืึธืก ืึธืืึทืืืื ืจืืึฟ ืคืื ืื ืจืืืื ืืึทืกืงืก ืืืึธืก ืฉืืืืขื ืืืขื ืืจืืขืื ืืื ืื ืคึผืจืึธืืืงื ืืขืื ืฆืืงื. ืื ืืืืขืงืึธืืข ืืืึธืก ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืขื ืขื ืื, ืืื ืืื ืงืึทืกืืึทืืขืจื ืืื ืืืึธืงืืฉืึทืื ืก, ืืื ืกืืึธืจื ืืื ืื ืื ืคึผืืฅ ืืื ืึทืืืคึผืืฅ ืคืื ืืจืึทื ืืึทืงืฉืึทื ื (ืื ืืจืึทื ืืึทืงืฉืึทื ื ืืื ืืขื ืขื ืกืืึธืจื ืืื ืืืึทืงืก, ืื ืืืึทืงืก ืืื ืืขืืืขืืื ืืขื ืขื ืคืึทืจ-ืขื ืงืึธืื ืืื ืื GOB ืคึฟืึธืจืืึทื). ืขืจืฉืืขืจ, ืืึธืื ืืื ืื ืจืขืื ืืืขืื ืืขื ืคึผืจืึธืืึธืงืึธื ืืื ืื ืกืขืจืืืขืจ (ืึทืงืึท ื ืึธืืข).
ืืขืจ ืคึผืจืึธืืึธืงืึธื ืืื ื ืืฉื ืงืึธืืคึผืืืฆืืจื, ืืขืจ ืืื ืฆืขืจ ืคืื ื ืืื ืฆื ืืึทืฉืืืืขื ืฆื ืื ืืึธืืข ืคืื โโืืึธืืืื ื ืขืืืขืืข ืืึทืื, ืืืืฉืึทืืืึทืื ืึท ืืืึธืง ืึธืืขืจ ืืจืึทื ืกืึทืงืืืึธื, ืืื ืขื ืืคืขืจ ืฆื ืึท ืกืคึผืขืฆืืขื ืืึทืคึฟืขืื ืฉืืจื, ืืื ืขืก ืืื ืืืื ืืืจืฃ ืคึฟืึทืจ ืืงืกืืฉืืื ืืืฉืื ื ืื ืืืึทื ืืึธืจื, ืึทืืื ืึทื ืืขืจ ื ืึธืืข ืืืืืกื ืืืขืจ ืขืก ืืื. ืืื ืงืึธื ื ืขืงืืขื ืฆื ืืื ืืื ืืื ืืึธืื ืืขืฉืขืคื ืฆื ืืึธื (ืื ื ืึธืืื ืงืึธื ื ืขืงืืขื ืคึฟืึทืจ ืื ืกืื ืืงืจืึทื ืึทืืืืฉืึทื ืกืขืกืืข ืืขื ืขื ืืืื ืืขืจืืคื "ืฉืื ืืช" ืืืืึทื ืืืืขืจ IP ืืื ืืึทืืืืกื ืืื ืืืืขืจ ืฉืืึทื ืืึทืื ืืขื ืขื ืกืืึธืจื ืืื ืืึผืจืื).
ืคืึธืืืขืจืก (ืืืจืขืงืืขืจืื ืืื ืืื ืืงืก ืจืืคื ืืื) ืืื ืื ืคืืจืฉืืื ื ืคืื Go ืคึผืจืึธืืืจืึทืืขืจื ืืขื ืขื ืืขืจืืคื ืคึผืึทืงืึทืืืฉืึทื, ืึทืืื ืืื ืื ืึธื ืืืื ืคืื ืืขืืขืจ ืืขืงืข ืืื Go ืงืึธื ืคืื ืืขื ืืืขืืืืืึทืืขืจ ืืื ืฉืจืืึทืื ืคึผืขืงื folder_name_where_this_file ืืื ืืืื. ืึทื ืืขืจืฉ, ืืืจ ืืืขื ื ืืฉื ืงืขื ืขื ืฆื ืงืึธืจืืขื ืืขื ืคึผืขืงื ืฆื ืื ืงืึทืืคึผืืืืขืจ. ื ื, ืืึธืก ืืื ื ืื ืงืืื ืกืื ืคึฟืึทืจ ืื ืืืืก ืงืขื ืขื ืืขื ืฉืคึผืจืึทื. ืืึธืก ืืขื ืขื ืื ืคึผืึทืงืึทืืืฉืึทื:
- ื ืขืฅ ืงืึธืืื ืืงืึทืฆืืข (ืกืขืจืืืขืจ, ืงืืืขื ื, ืคึผืจืึธืืึธืงืึธื)
- ืกืืจืึทืงืืฉืขืจื ืคืื ืกืืึธืจื ืืื ืืจืึทื ืกืืืืืขื ืืึทืื (ืืืึธืง, ืืจืึทื ืกืึทืงืืืึธื)
- ืืึทืืึทืืึทืกืข (ืืืึธืงืืฉืืื)
- ืงืึธื ืกืขื ืกืืก
- ืกืืึทืงื ืืืืจืืืึทื ืืึทืฉืื (ืงืกืืื)
- ืึทืืืืืืขืจื (ืงืจืืคึผืืึธ, ืืืืคึผืก) ืึทื ืก ืึทืืข ืคึฟืึทืจ ืืืฆื.
ืืึธืก ืืื ืึท ืืืืืื ืืงืจืืื ืืืขืจืกืืข, ืขืก ืคืขืื ืื ืืขืจ-ืคึผืจืึธืกืขืก ืื ืืขืจืึทืงืฉืึทื ืืื ืขืืืขืืข ืืงืกืคึผืขืจืืขื ืึทื ืงืึทืืคึผืึธืื ืึทื ืฅ, ืึธืืขืจ ืื ืกืืจืืงืืืจ ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืืขืจ ืืืึธืก ืึทื ืืืืืงืืื ื ืืื ืืืจืืืขืงืึธืื. ืืืื ืืืจ ืืึธื ืขืคึผืขืก ืฆื ืคึฟืึธืจืฉืืึธืื ืืื ืื ืืึทืืขืจืงืื ืืขื, ืืื ืืืขื ืืืื ืฆืืคืจืืื ืฆื ื ืขืืขื ืขืก ืืื ืืฉืืื ืืื ืืืืึทืืขืจ ืึทื ืืืืืงืืื ื. ืืื ืืืฆื ืคึฟืึทืจ ืึท ืืขืจืงืืขืจืื ื ืคืื ืื ืกืขืจืืืขืจ ืืื ืคึผืจืึธืืึธืงืึธื.
ืืื ืก ืงืืง ืืืึท ืกืขืจืืืขืจ ืขืจืฉืืขืจ.
ืื ืกืขืจืืืขืจ ืกืืืจืืืื ืข ืืงืื ืืื ืึท ืืึทืื ืกืขืจืืืขืจ ืืืึธืก ืืืืคื ืืืืฃ ืฉืคึผืืฅ ืคืื ืื TCP ืคึผืจืึธืืึธืงืึธื ื ืืฆื ืืึทืื ืกืืจืึทืงืืฉืขืจื ืคืื ืื ืคึผืจืึธืืึธืงืึธื ืคึผืขืงื.
ืื ืจืืืื ื ืืฆื ืื ืคืืืืขื ืืข ืคึผืึทืงืึทืืืฉืึทื: ืฉืืื, ืคึผืจืึธืืึธืงืึธื, ืืืืคึผืก. ืืื ืื ืคึผืขืงื ืืื tcp_server.go ืึผืืื ืืึทืื ืกืืจืืงืืืจ ืืื ืขื.
type Serve struct {
Port string
BufSize int
ST *types.Settings
}
ืขืก ืงืขื ืขื ืึธื ื ืขืืขื ืื ืคืืืืขื ืืข ืคึผืึทืจืึทืืขืืขืจืก:
- ื ืขืฅ ืคึผืึธืจื ืืืจื ืืืึธืก ืืึทืื ืืืขื ืืืื ืคืืจืืืื
- ืกืขืจืืืืจืขืจ ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืื JSON ืคึฟืึธืจืืึทื
- ืคืึธื ืคึฟืึทืจ ืคืืืกื ืืืง ืืื ืืืืึทื ืืึธืืข (ืคึผืจืืืืึทื ืืืึธืงืืฉืืื)
ืคึผืจืึธืืจืขืก:
- ืืืืขื ื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื JSON ืืขืงืข
- ืื ืืขืืื ืืึธืืข ืคืึธื ืืื ืึธืคึผืืขืฉืืขืื: ืืืื ืขืก ืืื ืืึทืฉืืืื, ืื ื ืขืฅ ืกืื ืืงืจืึทื ืึทืืืืฉืึทื ืกืงืขืืืฉืืืขืจ ืืื ื ืืฉื ืืึธื ืืฉื ืืื ืื ืืืึธืงืืฉืืื ืืื ื ืืฉื ืืึธืืืื
- ืื ืืืืึทืืืืืื ื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืึทืื ืกืืจืืงืืืจ ืืื ืึธื ืืืื ืื ืกืขืจืืืขืจ
ืกืขืจืืืืจืขืจ
- ืื ืงืึทืืขืจ ืคืื ืื TCP ืกืขืจืืืขืจ ืืื ื ืขืฅ ืื ืืขืจืึทืงืฉืึทื ืืื ืืืื ืืื ืืขื ืคึผืจืึธืืึธืงืึธื.
- ืขืก ืืื ืึท ืกืขืจืื ืืึทืื ืกืืจืืงืืืจ ืงืึทื ืกืืกืืื ื ืคืื ืึท ืคึผืึธืจื ื ืืืขืจ, ืึท ืืึทืคืขืจ ืืจืืืก ืืื ืึท ืืืึทืื ืฆื ืื ืกืืจืืงืืืจ ืืืืคึผืก.ืกืขืืืื ืืก
- ืืขืจ ืจืึทื ืืืคึฟื ืกืืึทืจืฅ ื ืขืฅ ืื ืืขืจืึทืงืฉืึทื (ืฆืืืขืืขืจื ืคึฟืึทืจ ืื ืงืึทืืื ื ืงืึทื ืขืงืฉืึทื ื ืืืืฃ ืึท ืืขืืขืื ืคึผืึธืจื, ืืืขื ืึท ื ืืึทืข ืงืฉืจ ืืื ืืืงืืืขื, ืื ืคึผืจืึทืกืขืกืื ื ืืื ืืจืึทื ืกืคืขืจื ืฆื ืื ืคึผืจืืืืึทื ืฉืขืคึผื ืืืคึฟื ืืื ืึท ื ืืึทืข ืคืึธืืขื)
- ะ ืืขื ืื ืืึทืื ืคืื ืื ืงืฉืจ ืืื ืืืืขื ืขื ืืื ืึท ืืึทืคืขืจ, ืงืึธื ืืืขืจืืขื ืฆื ืึท ืฉืืจืืงื ืคืึทืจืืจืขืืื ื ืืื ืืืจืืืขืืื ืืขื ืฆื ืคึผืจืึธืืึธืงืึธื.ืืจืืจื
- ืคึผืจืึธืืึธืงืึธื.ืืจืืจื ืงืขืจื ืืื ืืึทืืืขืก ืึธืืขืจ ื ืึท ืืขืืช. ืืึทืืืขืก ืืขืืึธืื ืืจืึทื ืกืคืขืจื ืฆื ืคึผืจืึธืืึธืงืึธื. ืื ืืขืจืคึผืจืืืืืึธืก ืงืขืจื ืืื intrpr - ืืืืคืขืฅ ืคืื ืืืคึผ ืื ืืขืจืคึผืจืขืืขืืึทืืึท, ืึธืืขืจ ื ืึท ืืขืืช ืืื ืคึผืจืึทืกืขืกืื ื ืื ืกืขืืขืงืฆืืข ืจืขืืืืืึทื
- ืืขืืึธืื ืืขืจ ืืึทืฉืืืืขื ืืื ืขืงืกืึทืงืืืืึทื intrpr.Commands[0] ืืืึธืก ืืฉืขืงืก ืืืื ืขืจ ืคืื: ืจืขืืืืืึทื, ืื ืื., ืืขืืช ืืื ืขืก ืืื ืึท ืึธืคึผืืืืืื ื ื ืื ืืืกืฆืึธืื
- ืืื ืืขืจ ืึธืคึผืืืืืื ื ืืึทืืืขืก ืืึทืฉืืืืขื ืืื ืืขืคึฟืื ืขื ืืืจื ืืืขืจื intrpr.Commands[1] ืืืึธืก ืืฉืขืงืก ืื ืืืึทืืืขืก ืืึทืคืขืจืืขื ืื ะธ ืืืขืจืกืืข (ืืื ืืขืืขืจ ืคืึทื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืคึฟืื ืงืฆืืข ืืื ืืขืจืืคื)
ืคืึทื ืืงืฉืึทื ื GetVersion ะธ BufferLength ืืขื ืขื ืืื ืืขืจ ืืขืงืข 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
- ืงืจืืืืฅ ืึท ืืึทืคืขืจ newbuf ืกืคึผืขืกืืคืืขื ืืจืืืก:
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"))
ืืขืืืึธืืก ืคืื ืื ืกืขืจืืืขืจ ืคึผืขืงื ืืขื ืขื ืงืึทื ืคืืืืขืจื ืฆื ืคึผืจืึธืฆืขืก ืืืงืืืขื ืืึทืื ื ืืฆื ืคืึทื ืืงืฉืึทื ื ืคืื ืืขื ืคึผืขืงื ืคึผืจืึธืืึธืงืึธื.
ืคึผืจืึธืืึธืงืึธื
ื ืคึผืจืึธืืึธืงืึธื ืกืขืจืืืขืก ืืื ืึท ืืืื ืืืึธืก ืจืขืคึผืจืึทืืขื ืฅ ืืึทืื ืืื ื ืขืฅ ืืืขืงืกื.
ืืจืืจื (ืกืืจ ืฉืืจืืงื) (ืฉืืจืืงื, ืืขืืช) ืคึผืขืจืคืึธืจืื ืขืจืฉืืืง ืคึผืจืึทืกืขืกืื ื ืคืื ืืึทืื ืืืงืืืขื ืืืจื ืื ืกืขืจืืืขืจ, ืืืงืืื ืึท ืฉืืจืืงื ืคืึทืจืืจืขืืื ื ืคืื ืื ืืึทืื ืืื ืึทืจืืึทื ืฉืจืืึทื ืืื ืงืขืจื ืึท ืฉืืจืืงื ืฆืืืขืืจืืื ืคึฟืึทืจ ืืืืขืจืืขืฆืขืจ:
- ืื ืึทืจืืึทื ืฉืจืืึทื ืฉืืจืืงื ืืื ืฉืคึผืึทืืื ืืื ืงืึธืคึผ ืืื ืืืฃ ื ืืฆื ReqParseN2(str)
- ืงืึธืคึผ ืืื ืฉืคึผืึทืืื ืืื ืขืืขืืขื ืื ืืื ืืขืฉืืขืื ืืื ืึท ืงืึทืืึทื ืื ืจืขืคืื ื ืืฆื ReqParseHead (ืงืึธืคึผ)
- ะ ืืึทืฉืืืืขื (ืงืึทืืึทื ืื [0]) ืืืืกืงืืืึทืื ืื ืืืงืืืขื ืืึทืคึฟืขื (ืงืื, ืฉืืืกื, ืึทืืจืขืก ืึธืืขืจ ืืขืจ ืึธืคึผืืืืืื ื ืืื ืืจืืืขืจื ื ืื ืืืกืฆืึธืื)
- 2 ืงืึทืืึทื ืื ืืขื ืขื ืึธืคึผืืขืฉืืขืื ืืื cmd ืืึทืฉืืืืขื (ืงืึทืืึทื ืื [1]) - ืืขื ื ะธ getversion.
- ืืขื ื ืืฉืขืง ืื ืืึทืื ืืืคึผ ืืื ืงืึทืืึทื ืื[2] ืืื ืกืึทืืืขืก ืขืก ืืื ืืึทืืึทืืืคึผืข
- ืืฉืขืงืก ืึทื ืืืฃ ืึผืืื ืึท ืฉืืจืืงื ืืืขืจื
len(body) < 1
- ืงืขืจื ืื ืขื ืืคืขืจ ืฉืืจืืงื:
"result:bufferlength:" + datatype + "/" + body
- getversion ืืื ืฆืืจืืง ืึท ืฉืืจืืงื
return "result:version/auto"
ืืืืขืจืืขืฆืขืจ
ืึผืืื ืื ืื ืืขืจืคึผืจืขืืขืืึทืืึท ืกืืจืืงืืืจ ืืื ืคึผืขืจืคืึธืจืื ืฆืืืืืืืง ืคึผืจืึทืกืขืกืื ื ืคืื ืื ืืึทืื ืืืืืขืงืขืจื ืคึฟืื ืืจืืืจืข ืกืืจืื ืืก ืืื ืืืืคืขืฅ ืคืึธืจืืืจืื ื ืื ืืขืจืคึผืจืขืืขืืึทืืึท.
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
ืืขื ืืืืคืขืฅ ืืื ืืขื ืืฆื ืืื 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)
- ืืืื ืื ืขืื ืคืึธื ืืื ืืืจืืืขืืื ืืขื, ืขืก ืกืืึทืจืฅ ืฉืขืืืืขืจ
- ืืืื ืื 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