Hi,
I want to have a server and a client that do not close connection when doing request/response rounds. However, I can't convince my client to flush the output and send data without closing a connection. This is the code:
client.d
auto conn = connectTcp("127.0.0.1", 1234);
string text;
while(1)
{
text = stdin.readln();
if (text == "exit") break;
conn.write(text, true);
}
I have tried the write with and without the flush parameter. Also setting conn.tcpNoDelay = true. None of this works. conn must be closed for the data to be sent. Confirmed with wireshark. What to do?
Also, how should a propper server that listens for such persistent connections look like? So far I have this, but it does not seem right. Especially the part with waitForData...
server.d
listenTcp(1234, (conn)
{
ubyte[] data;
auto part = appender!(ubyte[])();
while (conn.connected)
{
if (!conn.waitForData(dur!"msecs"(250))) continue;
while (!conn.empty)
{
size_t chunk = cast(size_t)min(conn.leastSize, BUFFER_SIZE);
conn.read(_buffer[0..chunk]);
part.put(_buffer[0..chunk]);
}
data ~= part.data;
...
// Fiddle with data
...
}
});
Thanks,
Martin