Runner in the High

技術のことをかくこころみ

D言語で作るTCPサーバの最小構成

コネクションプーリングとかワーカスレッドの多重化とかやってないめっちゃ簡易版。

import std.stdio;
import std.socket;
import core.thread;

void main() {
  Socket server = new TcpSocket();

  server.setOption(SocketOptionLevel.SOCKET, SocketOption.REUSEADDR, true);
  server.bind(new InternetAddress(8080));
  server.listen(1);

  char[1024] buffer;

  enum header =
    "HTTP/1.0 200 OK\nContent-Type: text/html; charset=utf-8\n\n";

  string response = header ~ "Hello World!\n";

  while(true) {
    Socket client = server.accept();

    client.receive(buffer);
    writeln(cast(string)buffer);

    client.send(response);

    client.shutdown(SocketShutdown.BOTH);
    client.close();
  }
}