Here's a description of the protocol used by DICElib.
DICElib uses (internally) a server-client system, which saves network resources and avoid conflicts between the client's data. The server (which we call control) is a very light program, which basically works only as a bridge and a referee between the clients; you don't have to know about it, except that it runs in the computer you start your DICElib program.
Everything is done using TCP/IP.
[more to come]