module socketserver; import dsfml.system.all; import dsfml.network.all; version (Tango) { import tango.io.Console; import tango.io.Stdout; } else { import std.stdio; } void main() { //We create a TCP socket for listening incomming client SocketTCP listener = new SocketTCP(); //Set a random port for the listener if (!listener.listen(9000)) assert(0); //Creation of TCP socket SocketTCP client = new SocketTCP(); IPAddress ipClient; display("Waiting for client."w); if (listener.accept(client, ipClient) == SocketStatus.DONE) //This call blocks until client connection { display("New client connected."w); //The packet for retrieving the client message Packet p = new Packet(); display("Waiting for data"w); if (client.receive(p) != SocketStatus.DONE) //Assert on reception error assert(0); //Display the string send by the client wchar[] c; p.get(c); display("Packet received : "w ~ c); //Clear the packet (We could use a new one) p.clear(); //and send response to client client.send(p.set("Hello from the server !"w)); } read(); } /** * Multilib string display */ void display(wchar[] c) { version (Tango) { Stdout(c).newline; } else { writefln("%s", c); } } /** * Dummy function to prevent console closing on windows */ void read() { version (Tango) { Cin.get(); } else { readln(); } }