1 /* 2 * Client demo. 3 * Connects to server in demo/server.d to port 2525 4 * Reads line from stdin, sends to server, outputs messages received to stdout 5 */ 6 7 module client; 8 9 version(clientdemo){ 10 import networkd; 11 import std.stdio; 12 13 void main(){ 14 Node client = new Node(); 15 // generate keys, we want it encrypted 16 writeln("generating keys, takes time... "); 17 client.generateKeys(1024); 18 writeln("done"); 19 // stores the ID of the connection with server 20 uint serverConnectionID; 21 // connect with server 22 serverConnectionID = cast(uint)client.newConnection("localhost", 2525); 23 writeln("sending key... "); 24 if (client.sendKey(serverConnectionID)){ 25 writeln("done"); 26 }else{ 27 writeln("failed"); 28 } 29 // start sending each line, and write received message back 30 bool isRunning = true; 31 while (isRunning){ 32 string line = readln; 33 // remove trailing \n: 34 line.length --; 35 // send 36 bool sentOk = client.sendMessage(serverConnectionID, cast(char[])line); 37 if (sentOk){ 38 writeln("message sent, waiting for reply..."); 39 }else{ 40 writeln("failed to send message to server"); 41 break; 42 } 43 // receive 44 NetEvent[] events = client.getEvent(); 45 foreach (event; events){ 46 if (event.type == NetEvent.Type.MessageEvent){ 47 if (event.encrypted){ 48 write("(encrypted) "); 49 } 50 writeln("server: ",event.getEventData!(NetEvent.Type.MessageEvent)); 51 }else if (event.type == NetEvent.Type.ConnectionClosed){ 52 writeln("Server closed the connection"); 53 isRunning = false; 54 break; 55 } 56 } 57 } 58 .destroy(client); 59 } 60 }