High performance TcpServer - 1. Network Communication Protocol
High-performance TcpServer - 2. create high-performance Socket server SocketAsyncEventArgs implemented (IOCP)
High performance TcpServer - 3. command channel ( treatment: substitution, stick package, trash bag )
High performance TcpServer - 4. File Channel ( treatment: sub-files, support for HTTP )
High performance TcpServer - 5. Client Management
Protocol Specification
Communication using GB2312 encoding format
Packet Format:
Identifier = the length of the device number # # # packet type task id # # package contents
Notes: length : 4 if less than 0, the identifier # # a length size between
Packet examples
1. The package is empty
HTEMP=0026#1533022506#Meter-001#01##
2. The package contains multiple fields
HTEMP=0043#1533022506#Meter-001#01#get-version@nb001#
3. The package contains multiple fields (inter-field divided by @ array within a field [{}, {}])
HTEMP=0261#WaterMeter-001#1520557005#03#buildid=44@edmid=37@meter=1228@denddate=2018-02-05 17:36:22@[{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}]#
Agreement
A heartbeat packet. (Packet type: 01)
HTEMP=0026#Meter-001#1533022506#01##
HTEMP=0028#Meter-001#1533022506#01#ok#
Two Time Synchronization (packet type: 02)
HTEMP=0026#Meter-001#1533022506#02##
HTEMP=0045#Meter-001#1533022506#02#2018-08-16 09:50:58#
Three data upload (packet type: 03)
HTEMP=0256#Meter-001#1520557005#03#buildid=44@edmid=37@meter=1228@denddate=2018-02-05 17:36:22@[{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}+{132,0.0000}]#
HTEMP = 0048 # Meter-001 # 1520557005 # 03 # error @ server returns a failure! #
HTEMP=0028#Meter-001#1520557005#03#ok#
Four . Versions Query (packet type: 04) Input: Software (nb001) Output: version number
HTEMP=0044#Meter-0001#1533022507#04#get-version@nb001#
HTEMP=0028#Meter-0001#1533022507#04#2#
Five software update (package type: 05) Input: Software (nb001) Output: Number of packages
HTEMP=0042#Meter-0001#1533022508#05#get-count@nb001#
HTEMP=0029#Meter-0001#1533022508#05#16#
Six . Download (packet type: 06) Input: Package Index Output: packet data
HTEMP=0044#Meter-0001#1533022508#06#do-update@nb001@1#
HTEMP=0495#Meter-0001#1533022508#06#504B03041400000008007A640F4D6BEBFDBA000E00004D2E000007000000636F6D732E7079D51A6B73D356F6BB7FC55D7932926AC7D80EA1901DB10D8901CF244ED636FB189AF1C8D275A246B6BC924C603B9D816E29852DD09D6E976D0B944E4BB7B3DB02EDD22729FD3328099FF80B7BEE4B962C3BA4E36DBBAB99C4D23DCF7BCEB9F79C7BA4349A7C6612198E6975566750CF6F350E929194D5EE3AAE8FBC339EB8B59DD55540128FBED5C6E2BEED98CD9ED7F0D713033913B7AC0EF690EE21C3F393707647C0EC6E1446C3F57B7D2CF23412D337BA114C780A27835D4BB7C553CFB56DAB59CCB2DF#
Seven . Version update (package type: 07) Input: edmid @ version Output: results
HTEMP=0046#Meter-0001#1533022509#07#update-version@56@2#
HTEMP=0029#Meter-0001#1533022509#07#ok#