Write two programs (or one program with two modes) which run on networked computers, and send some messages between them.

The protocol used may be language-specific or not, and should be suitable for general distributed programming; that is, the protocol should be generic (not designed just for the particular example application), readily capable of handling the independent communications of many different components of a single application, and the transferring of arbitrary data structures natural for the language.

This task is intended to demonstrate high-level communication facilities beyond just creating sockets.

/* distributed_programming_server.wren */
 
class Rpc {
    foreign static register()
 
    foreign static handleHTTP()
}
 
foreign class Listener {
    construct listen(network, address) {}
}
 
class HTTP {
    foreign static serve(listener)
}
 
Rpc.register()
Rpc.handleHTTP()
var listener = Listener.listen("tcp", ":1234")
HTTP.serve(listener)