| #include <httplib.h> | |
| #include <iostream> | |
| 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(); | |
| } |