It’s a reversible method for converting interesting things into completely uninteresting and useless numbers … and then converting those uninteresting and useless numbers back into interesting things again.
A streaming codec loop
Protocols wrap protocols. Binary protocols boils down to:
Getting how many bytes are coming next
Writing the buffer with the meaning of the data(meaningless to the protocol itself).
Start by writing two threads, TcpListener and the other has a TcpStream that connects to the listener
Have them send messages back and forth that begin with 8 byte fixed-size frame delimiters.
The frame delimiter says how many bytes are coming.
The codec loop is trivial
Read 8 bytes, turn it into a u64
Read that many bytes into a new buffer that will be interpreted as the actual message.
Eg. 2 a b 3 a b c 1 a will turn into 3 messages: ab, abc, a.
A Frame is essentially (size, message), these can be refereed to as “framed protocols”.