Create a binary that, when executed, links itself to other broadcaster binaries that are running. This binary is able to receive instructions to display and broadcast a message to other broadcasters it's linked to.
The resulting graph of linked broadcasters should always constitute a spanning tree, in other words, all of them should be connected and there shouldn't be any redundant edges.
$ broadcaster --port 8000
Started listening for instructions on :8000.
$ broadcaster --port 8001 --link 8000
Linked to broadcaster at :8000.
Started listening for instructions on :8001.
$ broadcaster --port 8002 --link 8000
Linked to broadcaster at :8000.
Started listening for instructions on :8002.
$ broadcaster --port 8003 --link 8002
Linked to broadcaster at :8002.
Started listening for instructions on :8003.
Following diagram visualizes the case when "8082" receives a message instruction. A blue node means that it's printing a message.