मैं नियंत्रण-सी ईवेंट को कैसे प्रबंधित करूं या अपना बूस्ट :: एएसओ सर्वर रोकूं। मेरे पास एक tcp & udp संयुक्त सर्वर है और जब मैं ctrl-c दबाता हूं तो साफ़ रूप से बाहर निकलने में सक्षम होना चाहता हूं। मुझे अनचाहे नियंत्रण-सी के लिए पहला मौका अपवाद मिलता है। यहाँ मेरी कोडएक बूस्ट टीसीपी/udp सर्वर में नियंत्रण-सी को कैसे संभालना है
void startTCP()
{
http::syncServer::server serv(2);
// Set console control handler to allow server to be stopped.
// console_ctrl_function = boost::bind(&http::syncServer::server::stop, &serv);
//SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
// Run the server until stopped.
serv.run();
}
void startUDP()
{
boost::asio::io_service io_service;
http::syncServer::udp_server server(io_service);
// console_ctrl_function = boost::bind(&http::syncServer::udp_server::stop, &server);
// SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
io_service.run();
}
int main(int argc, char* argv[])
{
try
{
boost::shared_ptr<boost::thread> tcpThread(new boost::thread(startTCP));
boost::shared_ptr<boost::thread> udpThread (new boost::thread(startUDP));
/*console_ctrl_function = boost::bind(&http::syncServer::udp_server::stop, &server);
SetConsoleCtrlHandler(console_ctrl_handler, FALSE);*/
tcpThread->join();
udpThread->join();
}
catch (std::exception& e)
{
std::cerr << "exception: " << e.what() << "\n";
}
return 0;
}
[मानक तरीका के संभावित डुप्लिकेट की तरह Boost.Asio साथ एक साफ बंद प्रदर्शन करने के लिए asio से signal_set उपयोग कर सकते हैं ] (http://stackoverflow.com/questions/4639909/standard-way-to-perform-a-clean-shutdown-with-boost-asio) – CharlesB