one_time_request.cc 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <httplib.h>
  2. #include <iostream>
  3. using namespace httplib;
  4. const char *HOST = "localhost";
  5. const int PORT = 1234;
  6. void one_time_request_server(const char *label) {
  7. std::thread th;
  8. Server svr;
  9. svr.Get("/hi", [&](const Request & /*req*/, Response &res) {
  10. res.set_content(std::string("Hello from ") + label, "text/plain");
  11. // Stop server
  12. th = std::thread([&]() { svr.stop(); });
  13. });
  14. svr.listen(HOST, PORT);
  15. th.join();
  16. std::cout << label << " ended..." << std::endl;
  17. }
  18. void send_request(const char *label) {
  19. Client cli(HOST, PORT);
  20. std::cout << "Send " << label << " request" << std::endl;
  21. auto res = cli.Get("/hi");
  22. if (res) {
  23. std::cout << res->body << std::endl;
  24. } else {
  25. std::cout << "Request error: " + to_string(res.error()) << std::endl;
  26. }
  27. }
  28. int main(void) {
  29. auto th1 = std::thread([&]() { one_time_request_server("Server #1"); });
  30. auto th2 = std::thread([&]() { one_time_request_server("Server #2"); });
  31. std::this_thread::sleep_for(std::chrono::milliseconds(100));
  32. send_request("1st");
  33. std::this_thread::sleep_for(std::chrono::milliseconds(100));
  34. send_request("2nd");
  35. std::this_thread::sleep_for(std::chrono::milliseconds(100));
  36. send_request("3rd");
  37. std::this_thread::sleep_for(std::chrono::milliseconds(100));
  38. th1.join();
  39. th2.join();
  40. }