In my experience, not a good idea to write both the client and the server for a given protocol which use each other. Far too easy to misunderstand the protocol. I remember doing this for a training course I wrote for OLE (later COM) years ago. The client and the server worked perfectly together, just not with correctly implemented OLE clients and servers.
Just slap a new legally-distinct-but-still-confusing name on your client/server pair, and use it as a marketing tool to sucker in purchasing managers.
Like EtherNet/IP, where the IP somehow stands for "Industrial Protocol".