The Xconq networking strategy is based on having each connected
program maintain a complete and accurate game state, and
propagating user commands from one of the programs to all
others. Thus all programs are equal; but in order to serialize
multiple simultaneous user commands, one of the programs is a
"first among equals" called the master. If a player interacting
with a non-master clicks to move, then the command actually just
goes to the master and doesn't actually happen until the master
propagates the command to all programs. The high-level protocol
for all this is part of the Xconq kernel, and includes
buffering, checksum, and other features. The OS interface code
need only provide definitions for these functions: void
open_remote_connection(char *methodname)establishes a connection
to another program, using information supplied in void
low_send(int id, char *buf)sends the contents of buf to the
program whose remote id is id. int low_receive(int *idp, char
*buf, int maxchars, int timeout)waits for data