My involvement with xPL has come to an end. Automation has moved on considerably over the past few years, and it is now possible to buy a stand-alone controller off the shelf for a reasonable price, without having to spend hours writing your own code.
This website is being maintained as a record of my xPL development work up until 2011.
I have released the full source code of all my xPL projects into the public domain. You can download the archive from here.
The hub listens for xPL messages on port 3865, and when one is received, retransmits it to all the other xPL programs running on the PC. So that the hub knows what programs are running and which ports they are listening on, every xPL application sends a regular heartbeat message containing this information.
Sending messages is far simpler than receiving them - xPL applications simply broadcast them to the whole network. All xPL hubs on connected PCs will receive the messages and pass them on to the local xPL applications.
Note: Broadcast messages will not pass through routers and out onto the Internet, and they may fail to cross to other subnets depending on how the local network is configured. There is an xPL bridging application available to get around this. The destinations of the messages can be further restricted by modifying the broadcast address. The address defaults to 255.255.255.255 but can be changed using xPLHal or by editing the Windows registry.