더 큰 소프트웨어를위한 작은 서버 루프를 개발하고 있지만 원하는대로 작동하지 않습니다. 내가 스레드에게 다음과 같은 방법으로 시작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)));
을하지만 문제가
".quit"의 사용자 유형 내가 소프트웨어가이 스레드 서버 루프를 중지 할
"서버"를 중지합니다. 아무리 내가 스레드를 중단하면, 소켓을 닫고 및/또는 수용체하거나 프로그램 부스트을 깰 오류가 발생합니다 :Bad file descriptor
그것은 때마다 발생하지만 자주하지 않습니다 내가 그 문제를 해결하고자하고 그것을 무시하는 것이 아닙니다.
내 컴퓨터를 종료하는 방법을 알려주세요. ?
디버거를 연결하고 예외가 발생 어디 있는지 말할 수 있다면 도움이 될 것입니다. 'boost :: system :: error_file_descriptor' 오류 코드와 함께'boost :: system :: system_error'를 던질 수있는 여러 asio 메소드가 있습니다. –