@@ -4,9 +4,73 @@ Go TCP library: <https://github.com/chenjunpc2008/go-tcp>
44## tcpclient
55Go TCP client
66
7+ ```
8+ accepting connection:
9+
10+ +------------+ +-----------------------------+ +----------------+
11+ | | | | | |
12+ | | | | | |
13+ | tcp client |--->| establish remote connection |--->| create session |
14+ | | | | | |
15+ | | | | | |
16+ +------------+ +-----------------------------+ +----------------+
17+
18+ in session:
19+
20+ +-----------------+ +----------------------+ +-------------------------+ +------------+
21+ | | | Handler.Depack() | | | | |
22+ | read connection |--->| unpack packet payload|--->| Handler.OnReceiveData() |--->| user logic |
23+ | | | | | | | |
24+ +-----------------+ +----------------------+ +-------------------------+ +------------+
25+
26+ +------------+ +-----------------------+ +---------------------+
27+ | | | | | Handler.Pack() |
28+ | user logic |--->| client.SendToServer() |--->| pack packet payload |
29+ | | | | | |
30+ +------------+ +-----------------------+ +---------------------+
31+ |
32+ +------------------------+ +------------------+ |
33+ | | | | |
34+ | Handler.OnSendedData() |<---| write connection |<--------|
35+ | | | |
36+ +------------------------+ +------------------+
37+ ```
38+
739## tcpserver
840Go TCP server
941
42+ ```
43+ accepting connection:
44+
45+ +------------+ +-------------------+ +----------------+
46+ | | | | | |
47+ | | | | | |
48+ | tcp server |--->| accept connection |--->| create session |
49+ | | | | | |
50+ | | | | | |
51+ +------------+ +-------------------+ +----------------+
52+
53+ in session:
54+
55+ +-----------------+ +----------------------+ +-------------------------+ +------------+
56+ | | | Handler.Depack() | | | | |
57+ | read connection |--->| unpack packet payload|--->| Handler.OnReceiveData() |--->| user logic |
58+ | | | | | | | |
59+ +-----------------+ +----------------------+ +-------------------------+ +------------+
60+
61+ +------------+ +--------------------------+ +---------------------+
62+ | | | | | Handler.Pack() |
63+ | user logic |--->| tcpserver.SendToClient() |--->| pack packet payload |
64+ | | | | | |
65+ +------------+ +--------------------------+ +---------------------+
66+ |
67+ +------------------------+ +------------------+ |
68+ | | | | |
69+ | Handler.OnSendedData() |<---| write connection |<--------|
70+ | | | |
71+ +------------------------+ +------------------+
72+ ```
73+
1074# benchmark
1175Use ``` example/pressure-server ``` and ``` example/pressure-client ``` , ``` 1000 concurrent clients ``` , ``` 4 KB payload ``` get a result of ``` 100000 q/s ``` .
1276
0 commit comments