kullanarak durdurma Daha büyük bir yazılım için küçük bir sunucu döngüsü geliştiriyorum, ancak bunu yapmak istediğim gibi çalışmıyor. Ben konuyu şu şekilde başlatmakDişli sunucu döngüsünü Boost :: Asio
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)));
Ama problem
".quit" kullanıcı tipleri I yazılımı bu dişli sunucu döngüyü durdurmak istiyor
"sunucu" durduruluyor. Ne olursa olsun ben iplik kesme durumunda, yuva kapatmak ve/veya alıcı ya da sadece programın Boost kırmak hata atıyor:Bad file descriptor
Her zaman oluşur ama çoğu yok ve bu sorunu gidermek istiyoruz ve sadece görmezden gelmek değil.
Bunu nasıl kapatmam konusunda yardımcı olabilir misiniz clean?
bir hata ayklayc ve istisnası atılır nerede olduğunu söyler eğer yararlı olacaktır. "Boost :: system :: system_error" komutunu "boost :: system :: errc :: bad_file_descriptor" hata kodu ile atayabilen çoklu asio yöntemleri vardır. –