I made a network server/client that needs no library except Phobos. Came in a little under 500 lines but is quite generic:

http://arsdnet.net/dcode/server.d

The top of the file shows the usage program, then comes the code that could go in a library.

Basically you define an interface with a bunch of functions. The server writes a class that implements that interface and then mixes in the helper code that does the network talking. The network protocol is very basic, it just serializes the arguments and return values with function and sequence numbers to know what to call. The serializer only handles basic types, arrays, and some structs, it isn't much code.

On the client side, that class is automatically generated. It doesn't completely implement the interface though, because the functions are all async callbacks instead of return values.

Run it without arguments to be the server. Any arguments will cause it to be a client and connect to local host to run the example.

Reply via email to