เบชเปเบฒเบฅเบฑเบเบชเบตเปเปเบเบทเบญเบเปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ "เบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบฒเบเบเบปเบเบเปเบญเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบทเปเบญเบเบกเบทเบเบฒเบเบเบธเปเบกเบเบญเบเปเบเบเบฐเปเบซเบเบเบเบฒเบเบเบญเบเบฅเบฑเบเบเบฐเบเบฒเบเปเบฅเบฐเบญเบธเบเบชเบฒเบซเบฐเบเปเบฒเปเบเบเบญเบตเบเปเบชเป blockchain."
เบเบญเบเบเบตเปเบเปเบญเบเบขเบฒเบเบเบญเบเปเบเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบตเปเบเปเบญเบเปเบฅเบตเปเบกเปเบเบเบเบฒเบเบเบตเป, เปเบฅเบฐเบเบญเบเบเบตเปเบเปเบญเบเบเบฐเบญเบฐเบเบดเบเบฒเบเบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบเบขเปเบฒเบเบฅเบฐเบญเบฝเบ.
เบเบตเปเปเบกเปเบเบเบปเบเบเบงเบฒเบกเบเปเบฒเบญเบดเบเปเบเบเบธเบเบเบญเบเบเบปเบเบเบงเบฒเบก. เบเบตเปเบเบตเปเบเปเบญเบเบญเบฐเบเบดเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเปเบเปเบเบเบญเบ. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบนเปเบญเปเบฒเบเบชเบฒเบกเบฒเบเบเบฝเบเบชเบฐเบเบฑเบเบเบญเบเบเบปเบเปเบญเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบ blockchain เปเบซเบผเบปเปเบฒเบเบตเป.
เปเบเบเบตเบเบฒเบเบเบตเป, เบขเบนเปเบเบตเป Digital Breakthrough hackathon, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบฅเบฐเบเบปเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบญเบธเบเบชเบฒเบซเบฐเบเปเบฒเปเบฅเบฐเปเบชเบเบเบฐเบเบดเบเบเบดเบเบดเบเบญเบเปเบเบเบเปเบฒเปเบเปเปเบเบฑเบเปเบเปเบฅเบขเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบฒเบเบเบตเปเปเบเบเบขเบฒเบ; เบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบฑเบเปเบเปเบเบทเบเบญเบญเบเปเบซเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบเบเบญเบเบเบถเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเปเบฒเบเบเบฐเบงเบฑเบเบเปเบฒ (เบเปเบญเบเบเบงเบเบเบฝเบเปเบเบเบเปเบฒเบเบซเบฒเบ. เบเบปเบโเบเบงเบฒเบกโเบเปเบฝเบงโเบเบฑเบโเบเบฒเบโเบเปเบงเบโเปเบซเบผเบทเบญโเบฅเปเบฒโ, เบชเปเบฒโเบฅเบฑเบโเบเบนเปโเบเบตเปโเบเบฝเบโเปเบเปโเปเบฅเบตเปเบกโเบเบปเปเบโเบเบตเปโเบเบฐโเปเบฅเบตเปเบกโเบเบปเปเบโ)โ, เปเบฅเบฐโเปเบโเบเบฑเบโเบเบธโเบเบฑเบโเปเบโเบเปเบฒโเบชเบฑเปเบโ.
เบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบตเบเบเบทเปเบเปเบเบเบฒเบชเบฒ Go, เปเบฅเบฐเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฅเบฑเบญเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบกเปเบ LevelDB.
เบเบฒเบเบชเปเบงเบเบเบปเปเบเบเปเปเบกเปเบเปเบเปเบเบเบญเบ, เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ (เบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบ TCP เปเบฅเบฐ WebSocket - เบเปเบฒเบญเบดเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ synchronizing blockchain, เบเบตเบชเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบฅเบนเบเบเปเบฒ, เบชเบปเปเบเบเบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบเปเบฒเบชเบฑเปเบเบเบฒเบ JavaScript, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ.
เบเบฑเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบง, blockchain เบเบตเปเปเบกเปเบเบเปเบฒเปเบเบฑเบเบเบปเปเบเบเปเปเบเบทเปเบญเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเบปเบเบเปเบญเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบนเปเบชเบฐเบซเบเบญเบเปเบฅเบฐเบฅเบนเบเบเปเบฒ, เบซเบผเบทเบเบฑเบเบชเบญเบเบเบปเบเปเบเบเบปเบเบเบฝเบง. เบเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเบฎเบตเบเบฎเปเบญเบเบเบตเปเบเบฐเปเบเบทเปเบญเปเบเบเบฑเบ. เปเบเปเบงเบฝเบเบเบฒเบเบเปเปเบเบฝเบเปเบเปเบชเปเบฒเบ "เบเบทเปเบกเปเบเบฑเบ" เบเบตเปเบกเบตเปเบเบทเปเบญเบเบเบดเบเปเบฅเบเปเบเบเบปเบง, เปเบเปเบฅเบฐเบเบปเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบงเบฝเบเบเบฒเบเบเบปเบเบเบฐเบเบดเบชเปเบงเบเปเบซเบเปเปเบเบตเบเบเบทเปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบงเบปเบเบเบญเบเบเบตเบงเบดเบเบเบญเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ. bytecode เบเบตเปเบกเบตเบเบงเบฒเบกเบฎเบฑเบเบเบดเบเบเบญเบเบเปเปเปเบฅเบทเปเบญเบเบเบตเป, เบเบฒเบกเบเบฐเปเบเบเบตเบเบญเบ blockchains, เปเบกเปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบเปเบฅเบฐเบเบปเบเบเบฐเบฅเบดเบเบเบญเบเบเบธเบฅเบฐเบเปเบฒ (เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบปเบงเปเบญเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบฅเบฑเบญเบ, เบเบฑเบเปเบ LevelDB เปเบกเปเบเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเบญเบเปเบเบฎเบนเบเปเบเบ GOB). เบเปเบฒเบญเบดเบ, เปเบซเปเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเปเบเปเบเบเบญเบเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ (aka node).
เปเบเปเบเบเบญเบเบเปเปเบชเบฑเบเบชเบปเบ, เบเบธเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบกเบฑเบเปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบเบชเบนเปเปเบซเบกเบเบเบฒเบเปเบซเบผเบเบเปเปเบกเบนเบเบเบฒเบเบขเปเบฒเบ, เปเบเบเบเบปเบเบเบฐเบเบดเปเบกเปเบเบเบฅเบฑเบญเบเบซเบผเบทเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ, เปเบเบทเปเบญเบเบญเบเบชเบฐเบซเบเบญเบเบเบฑเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเบเบดเปเบชเบ, เปเบฅเบฐเบกเบฑเบเบเบฑเบเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ, เปเบเบทเปเบญเปเบซเป node เบฎเบนเปเบงเปเบฒเบกเบฑเบเปเบกเปเบเปเบ. เปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบกเบตเบเบธเบฅเบฐเบเบดเบเบเบตเปเบเบฐเปเบฎเบฑเบ (เบเปเปเบเบตเปเปเบเบทเปเบญเบกเบเปเปเบชเปเบฒเบฅเบฑเบเบเบญเบเบเบฐเบเบธเบก synchronization เบเบฑเบเปเบญเบตเปเบเบงเปเบฒ "เปเบเบทเปเบญเบเบเปเบฒเบ" เปเบเบฒเบฐเบงเปเบฒ IP เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเปเบฅเบฐเบเปเปเบกเบนเบเบเบญเบเบฅเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ).
เปเบเบเปเบเบต (เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเป Linux เปเบญเบตเปเบเบเบงเบเปเบเบปเบฒ) เปเบเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบญเบเปเบเบฅเปเบเบฅเบก Go เบเบทเบเปเบญเบตเปเบเบงเปเบฒเปเบเบฑเบเปเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเปเบเบเบญเบเบเบปเปเบเบเบญเบเปเบเปเบฅเบฐเปเบเบฅเปเบเบตเปเบกเบตเบฅเบฐเบซเบฑเบ Go เบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบงเบเปเบเบปเบฒเบเบฝเบ package folder_name_where_this_file. เบเปเบฒโเบเปเปโเบเบฑเปเบโเบเบฑเปเบโ, เบเปเบฒเบโเบเบฐโเบเปเปโเบชเบฒโเบกเบฒเบโเปเบซเปโเบญเบฒโเบซเบฒเบโเบเบธเบโเปเบซเปโเบเบญเบกโเบเบดเบงโเปเบเบตโเปเบเปโ. เบเบต, เบเบตเปเบเปเปเปเบกเปเบเบเบงเบฒเบกเบฅเบฑเบเบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบฎเบนเปเบเบฒเบชเบฒเบเบตเป. เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเบธเบ:
- เบเบฒเบโเบชเบทเปโเบชเบฒเบโเปเบเบทเบญโเบเปเบฒเบ (เปเบเบตเบโเปเบงเบตโ, เบฅเบนเบโเบเปเบฒโ, protocolโ)
- เปเบเบโเบชเปเบฒเบโเบเบญเบโเบเปเปโเบกเบนเบโเบเบตเปโเปเบเบฑเบโเบฎเบฑเบโเบชเบฒโเปเบงเปโเปเบฅเบฐโเบเบฒเบโเบเปเบฒเบโเปเบญเบ (blockโ, เบเบธโเบฅเบฐโเบเปเบฒโ)
- เบเบฒเบเบเปเปเบกเบนเบ (blockchain)
- เบเบงเบฒเบกเปเบซเบฑเบเบเบตเปเบซเบฑเบเบเปเบญเบก
- เปเบเบทเปเบญเบเบเบฑเบเบชเบฐเปเปเบทเบญเบเบเปเบญเบเบเบฑเบ (xvm)
- เบเบปเบงเบเปเบงเบ (crypto, เบเบฐเปเบเบ) เบเบฑเบเปเบปเบเบชเบณเบฅเบฑเบเบเบญเบเบเบตเป.
เบเบตเปเปเบกเปเบเบชเบฐเบเบฑเบเบเบฒเบเบชเบถเบเบชเบฒ, เบกเบฑเบเบเบฒเบเบเบฐเบเบดเบชเปเบฒเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบญเบเบเบฒเบเบเบปเบเบฅเบญเบเบเปเบฒเบเบงเบเบซเบเบถเปเบ, เปเบเปเปเบเบเบชเปเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเปเบฒเบฅเบฑเบเบเปเบฒเปเบเบตเบ. เบเปเบฒเบเปเบฒเบเบกเบตเบชเบดเปเบเปเบเบเบตเปเบเบฐเปเบเบฐเบเปเบฒเปเบเบเปเบฒเปเบซเบฑเบ, เบเปเบญเบเบเบฐเบเบดเบเบเบตเบเบตเปเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเปเปเปเบ. เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐ protocol.
เบฅเบญเบเปเบเบดเปเบเปเบเบตเบเปเบงเบตเบเปเบญเบ.
routine เบเปเบญเบเบเบญเบเปเบเบตเบเปเบงเบตเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเปเบเปเบเบเบญเบ TCP เปเบเบเปเบเปเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบฒเบเบเบธเบเปเบเปเบเบเบญเบ.
เบเบปเบเบเบฐเบเบดเปเบเปเปเบเบฑเบเปเบเบเบเปเปเปเบเบเบตเป: เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, protocol, เบเบฐเปเบเบ. เปเบเบเบธเบเบเบปเบงเบกเบฑเบเปเบญเบ tcp_server.go เบกเบตเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบ เบฎเบฑเบเปเบเป.
type Serve struct {
Port string
BufSize int
ST *types.Settings
}
เบกเบฑเบเบชเบฒเบกเบฒเบเบเบญเบกเบฎเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เบเบญเบเปเบเบทเบญเบเปเบฒเบเปเบเบเบเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบฅเบเบเปเบฝเบ
- เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเบเปเบงเบตเปเบเบฎเบนเบเปเบเบ JSON
- เบเบธเบเบชเบณเบฅเบฑเบเปเบฅเปเบเบขเบนเปเปเบเปเปเบเบเบตเบเบฑเบ (เบเบฅเบฑเบญเบเปเบเบเบชเปเบงเบเบเบปเบง)
เบเบงเบฒเบกเบเบทเบเปเปเบฒ:
- เบญเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเบฅเป JSON
- เบเบธเบเบฎเบนเบเปเบเบเบเบฒเบเบเบตเบเบฑเบเบเบทเบเบเบงเบเบชเบญเบ: เบเปเบฒเบกเบฑเบเบเบทเบเบเบฑเปเบ, เบเบปเบงเบเปเบฒเบเบปเบเปเบงเบฅเบฒ synchronization เปเบเบทเบญเบเปเบฒเบเบเปเปเปเบเปเปเบเบตเบเบเบปเบงเปเบฅเบฐ blockchain เบเปเปเปเบเปเบเบทเบเปเบซเบฅเบ.
- เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ
Server
- เบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบตเบเบเบปเบงเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ TCP เปเบฅเบฐเบเบฒเบเปเบเปเบเบญเบเปเบเบทเบญเบเปเบฒเบเปเบเบเบชเบญเบเบเปเบญเบเบเบฑเบเปเบเปเบเบเบญเบ.
- เบกเบฑเบเบกเบตเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบ Serve เบเบฐเบเบญเบเบเปเบงเบเปเบฒเบเปเบฅเบเบเบญเบ, เบเบฐเปเบฒเบ buffer เปเบฅเบฐเบเบปเบงเบเบตเปเปเบเบซเบฒเปเบเบเบชเปเบฒเบ types.Settings
- เบงเบดเบเบตเบเบฒเบ Run เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบเปเบเบญเบเปเบเบทเบญเบเปเบฒเบ (เบเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเปเบเบปเปเบฒเบขเบนเปเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป, เปเบกเบทเปเบญเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบซเบกเป, เบเบฒเบเบเบธเบเปเบเปเบเบเบญเบเบกเบฑเบเบเบทเบเปเบญเบเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบฒเบเบชเปเบงเบเบเบปเบงเปเบเบซเบปเบงเบเปเปเปเบซเบกเป)
- ะ เบเบฑเบเปเบเป เบเปเปโเบกเบนเบโเบเบฒเบโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเปเบกเปเบโเปเบเปโเบญเปเบฒเบโเปเบเบปเปเบฒโเปเบโเปเบ bufferโ, เบเปเบฝเบโเปเบเบฑเบโเบเบปเบงโเปเบเบโเบชเบฐโเบโเบฃเบดเบโเปเบฅเบฐโเบชเบปเปเบโเปเบโ protocol.เบเบฒเบเปเบฅเบทเบญเบ
- protocol.เบเบฒเบเปเบฅเบทเบญเบ เบเบฑเบเบเบทเบ เบเบปเบ เบซเบผเบทเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเบปเบ เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเปเบเปโเบเบปเบโเบเปเบฒเบโเปเบโ protocol.Interpreteเปเบเบดเปเบเบเบฑเบเบเบทเบเบกเบฒ intrpr - เบงเบฑเบโเบเบธโเบเบฐโเปเบเบโ เปเบเบเปเปเบกเบนเบ, เบซเบผเบทเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบปเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบ
- เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบชเบฐเบซเบผเบฑเบเปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบ intrpr.Commands[0] เปเบเบดเปเบเบเบงเบเบชเบญเบเปเบถเปเบเปเบ: เบเบปเบเปเบเปเบฎเบฑเบ, inv, เบเบงเบฒเบกเบเบดเบเบเบฒเบ เปเบฅเบฐโเบกเบตโเบเบฒเบโเบชเปเบงเบโ Default
- เปเบเบเบฒเบ เบเบปเบ เบชเบฐเบงเบดเบเปเบกเปเบเบเบปเบเปเบเบเบเปเบฒ intrpr.Commands[1] เปเบเบดเปเบเบเบงเบเบชเบญเบเบเปเบฒ bufferlength ะธ เบชเบฐเบเบฑเบเบเบฒเบชเบฒ (เปเบโเปเบเปโเบฅเบฐโเบเปโเบฅเบฐโเบเบตโเบเบฒเบโเบเปเบฒโเบเบฒเบโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโเปเบกเปเบโเปเบญเบตเปเบโเบงเปเบฒโ)
เบเบฑเบเบเบฑเบ GetVersion ะธ BufferLength เบขเบนเปเปเบเปเบเบฅเป srvlib.go เบเบธเบเปเบเบตเบเปเบงเบต
GetVersion(conn net.Conn, version string)
เบกเบฑเบเบเบฝเบเปเบเปเบเบดเบกเปเบชเป console เปเบฅเบฐเบชเบปเปเบเบชเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบซเบฒเบฅเบนเบเบเปเบฒ:
conn.Write([]byte("result:" + version))
.
เบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบ
BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)
เปเบซเบฅเบเบเบฅเบฑเบญเบ, เบเบธเบฅเบฐเบเปเบฒ, เบซเบผเบทเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบญเบทเปเบเปเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เบเบดเบกเปเบชเป console เบเบฐเปเบเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเปเบเปเบเบเบญเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบญเบกเบฎเบฑเบ:
fmt.Println("DataType:", intrpr.Commands[2])
- เบญเปเบฒเบเบเปเบฒ intrpr.เบฎเปเบฒเบเบเบฒเบ เบเบฑเบเบเบปเบงเปเบเบเบปเบงเปเบฅเบ buf_len
- เบชเปเบฒเบ buffer newbuf เบเบฐเปเบฒเบเบเบตเปเบฅเบฐเบเบธ:
make([]byte, buf_len)
- เบชเบปเปเบโเบเบฒเบโเบเบญเบโเบชเบฐโเบซเบเบญเบ ok:
conn.Write([]byte("result:ok"))
- เบเบทเปเบกเบเปเปเบกเบนเบเปเบชเป buffer เบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบฒเบเบเบฐเปเบชเบเบฒเบเบญเปเบฒเบ:
io.ReadFull(conn, newbuf)
.
- เบเบดเบกเปเบเบทเปเบญเปเบเบเบญเบ buffer เปเบชเป console เปเบเป
fmt.Println(string(newbuf))
เปเบฅเบฐเบเปเบฒเบเบงเบเบเบญเบ bytes เบญเปเบฒเบ
fmt.Println("Bytes length:", n)
- เบชเบปเปเบโเบเบฒเบโเบเบญเบโเบชเบฐโเบซเบเบญเบ ok:
conn.Write([]byte("result:ok"))
เบงเบดเบเบตเบเบฒเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบเปเบเบตเบเปเบงเบตเบเบทเบเบเบฑเปเบเบเปเบฒเปเบซเปเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบตเปเปเบเปเบฎเบฑเบเปเบเบเปเบเปเบเบฑเบเบเบฑเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบ protocol.
เบญเบฐเบเบธเบชเบฑเบเบเบฒ
เบญเบฐเบเบธเบชเบฑเบเบเบฒเปเบฎเบฑเบเปเปเบฒเบเบตเปเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเปเปเบกเบนเบเปเบเบเบฒเบเปเบฅเบเบเปเบฝเบเปเบเบทเบญเบเปเบฒเบ.
Choice(str string) (string, error) เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเปเบเบทเปเบญเบเบเบปเปเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเปเบฎเบฑเบเปเบเบเปเบเบตเบเปเบงเบต, เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเปเบเบเบชเบฐเบเบฃเบดเบเบเบญเบเบเปเปเบกเบนเบเปเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ เปเบฅเบฐเบชเบปเปเบเบเบทเบเบชเบฐเบเบฃเบดเบเบเบตเปเบเบฝเบกเปเบงเปเบชเปเบฒเบฅเบฑเบ เบเบฒเบเบเบฒเบชเบฒ:
- เบชเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบทเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบซเบปเบง เปเบฅเบฐ เบฎเปเบฒเบเบเบฒเบเปเบเบเปเบเป ReqParseN2(str)
- เบซเบปเบงเบเบทเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบญเบปเบเบเบฐเบเบญเบเปเบฅเบฐเบเบทเบเบเบฑเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเบเปเบฒเบชเบฑเปเบเปเบเบเปเบเป ReqParseHead(head)
- ะ เบชเบฐเบซเบผเบฑเบ(เบเปเบฒเบชเบฑเปเบ[0]) เปเบฅเบทเบญเบเบเปเบฒเบชเบฑเปเบเบเบตเปเปเบเปเบฎเบฑเบ (cmd, เบฅเบฐเบซเบฑเบ, เบเบตเปเบขเบนเป เบซเบผเบทเบเบฒเบเบชเปเบงเบเบเบทเบเบเบฐเบเบธเปเบ Default)
- 2 เบเปเบฒเบชเบฑเปเบเบเบทเบเบเบงเบเบชเบญเบเปเบ cmd switch(เบเปเบฒเบชเบฑเปเบ[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
เบงเบฑเบเบเบธเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบ server.go เบเบธเบเบซเบผเบฑเบ.
เบฅเบนเบโเบเปเบฒ
เบเบธเบเบฅเบนเบเบเปเบฒเบเบฐเบเบญเบเบเปเบงเบเบซเบเปเบฒเบเบตเป TCPConnect ะธ TCPRresponseData.
เบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบ
TCPConnect(s *types.Settings, data []byte, payload []byte)
เปเบฎเบฑเบเบงเบฝเบเปเบเบเบเบตเป:
- เบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเปเบกเปเบโเปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบตเปโเบฅเบฐโเบเบธโเปเบงเปโเปเบโเบงเบฑเบโเบเบธโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเปเบฒเบโ
net.Dial("tcp", s.Host + ":" + s.Port)
- เบเปเปเบกเบนเบเบเบตเปเบเปเบฒเบเปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเปเปเบกเบนเบเบเบทเบเบชเบปเปเบ:
conn.Write(data)
- เบเปเบฒเบเบญเบเปเบกเปเบเบญเปเบฒเบ
resp, n, _ := TCPResponseData(conn, s.BufSize)
เปเบฅเบฐเบเบดเบกเบญเบญเบเปเบ console เปเบเป
fmt.Println(string(resp[:n]))
- เบเปเบฒเปเบญเบ payload เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒเบโเบกเบฑเบโ
conn.Write(payload)
เปเบฅเบฐเบเบฑเบเบญเปเบฒเบเบเปเบฒเบเบญเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเบดเบกเบกเบฑเบเปเบชเป console
เบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบ
TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)
เบชเปเบฒเบ buffer เบเบญเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป, เบญเปเบฒเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบขเบนเปเบเบตเปเบเบฑเปเบเปเบฅเบฐเบชเบปเปเบเบเบทเบ buffer เบเบตเปเปเบฅเบฐเบเปเบฒเบเบงเบเบเบญเบ bytes เบญเปเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบงเบฑเบเบเบธเบเบงเบฒเบกเบเบดเบเบเบฒเบ.
เบเบดเบเบเบฐเบเบณเบเปเบญเบเบเบญเบเบฅเบนเบเบเปเบฒ
เบฎเบฑเบเปเบเปเบเบฒเบเบชเบปเปเบเบเปเบฒเบชเบฑเปเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ node, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเปเบเปเบฎเบฑเบเบชเบฐเบเบดเบเบดเบชเบฑเปเบเปเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบ.
เบชเบฒเบกเบฒเบเบเบญเบกเบฎเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเปเปเปเบเบเบตเป: เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบฎเบนเบเปเบเบ JSON, เบเปเปเบกเบนเบเบเบตเปเบเบฐเบเบทเบเบชเบปเปเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฑเบเบชเบฐเบเบฃเบดเบ, เปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเปเบเบตเปเบเบฐเบเบทเบเบชเบปเปเบเปเบเบซเบฒ payload, node scheduler emulation flag, เบเบฐเปเบเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบญเบเปเบเบฑเบเบเปเบฒเบเบปเบงเปเบฅเบ.
- เปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโ
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 เบเปเบญเบเบเบฐเปเบเบดเปเบเบเบฒเบเบฐเบฅเบฒเบ synchronization, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบทเปเบญเบ stack เบเบตเปเบเบธเบเปเบเปเบ bytecode เบเบฒเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบเปเบฅเบฐเบเบปเบเบเบฐเบฅเบดเบ, cryptography เปเบฅเบฐ. เบชเบฐเบเบธเบเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบปเบเปเบเปเบฎเบฑเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com