#include #include using namespace httplib; const char *HOST = "localhost"; const int PORT = 1234; void one_time_request_server(const char *label) { std::thread th; Server svr; svr.Get("/hi", [&](const Request & /*req*/, Response &res) { res.set_content(std::string("Hello from ") + label, "text/plain"); // Stop server th = std::thread([&]() { svr.stop(); }); }); svr.listen(HOST, PORT); th.join(); std::cout << label << " ended..." << std::endl; } void send_request(const char *label) { Client cli(HOST, PORT); std::cout << "Send " << label << " request" << std::endl; auto res = cli.Get("/hi"); if (res) { std::cout << res->body << std::endl; } else { std::cout << "Request error: " + to_string(res.error()) << std::endl; } } int main(void) { auto th1 = std::thread([&]() { one_time_request_server("Server #1"); }); auto th2 = std::thread([&]() { one_time_request_server("Server #2"); }); std::this_thread::sleep_for(std::chrono::milliseconds(100)); send_request("1st"); std::this_thread::sleep_for(std::chrono::milliseconds(100)); send_request("2nd"); std::this_thread::sleep_for(std::chrono::milliseconds(100)); send_request("3rd"); std::this_thread::sleep_for(std::chrono::milliseconds(100)); th1.join(); th2.join(); }