Я разрабатываю крошечный серверный цикл для более крупного программного обеспечения, но он не работает так, как я хочу.
Когда пользователь вводит ".quit", я хочу, чтобы программное обеспечение прекратило этот потоксерверный цикл:
try {
while (true) {
acceptor.accept(socket);
const size_t buffersize = 1024;
char data[buffersize+1] = {0};
data[socket.read_some(boost::asio::buffer(data,buffersize))] = '\0'; // Write data & place terminator
boost::thread asyncWriting(boost::bind( &myClass::writeToFile, this ));
socket.close();
}
} catch(const boost::system::system_error& e) {
cout << "Boost System Error: " << e.what() << endl;
}
Я запускаю поток следующим образом:
serverThread = boost::shared_ptr<boost::thread>( new boost::thread(boost::bind( &myClass::startServer, this )) );
Но у меня возникают проблемы с остановкой "сервера".Независимо от того, прерываю ли я поток, закрываю сокет и / или получатель или просто ломаю программу, Boost выдает ошибку:
Bad file descriptor
Это происходит не каждый раз, но часто, и я хочу это исправитьпроблема, а не просто игнорировать ее.
Можете ли вы помочь мне, как отключить это clean ?