tcp_echo_server.ncd 868 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. process main {
  2. getargs() args;
  3. value(args) args;
  4. num_different(args.length, "2") bad_args;
  5. If (bad_args) {
  6. println("bad arguments");
  7. exit("1");
  8. };
  9. args->get("0") addr_ip;
  10. args->get("1") addr_port;
  11. sys.listen({"tcp", {"ipv4", addr_ip, addr_port}}, "client_handler", {}) listener;
  12. If (listener.is_error) {
  13. println("failed to listen");
  14. exit("1");
  15. };
  16. println("listening");
  17. }
  18. template client_handler {
  19. to_string(_socket.client_addr) addr_str;
  20. println("client ", addr_str, ": connected");
  21. rprintln("client ", addr_str, ": disconnected");
  22. _socket->write("This echo server is implemented in NCD!\n\n");
  23. backtrack_point() recv_point;
  24. _socket->read() data;
  25. If (data.not_eof) {
  26. _socket->write(data);
  27. recv_point->go();
  28. };
  29. _socket->close();
  30. }