How to asynchronously read input from command line using boost asio in Windows?

后端 未结 3 1094
萌比男神i
萌比男神i 2020-12-29 14:02

I found this question which asks how to read input asynchronously, but will only work with POSIX stream descriptors, which won\'t work on Windows. So, I found this tutorial

3条回答
  •  星月不相逢
    2020-12-29 14:49

    You need to invoke io_service::run() to start the event processing loop for asynchronous operations.

    class Example {
        public:
            Example( boost::asio::io_service& io_service )
                : io_service(io_service), input_buffer( INPUT_BUFFER_LENGTH), input_handle( io_service)
            {
            }
            void start_reading();
            void handle_read( const boost::system::error_code& error, std::size_t length);
            void handle_write( const boost::system::error_code& error);
        private:
            boost::asio::io_service& io_service;
            boost::asio::streambuf input_buffer;
            boost::asio::windows::stream_handle input_handle;
    };
    
    int main( int argc, char * argv)
    {
        boost::asio::io_service io_service;
        Example obj( io_service );
        obj.start_reading();
    
        io_service.run();
    
        return 0;
    }
    

提交回复
热议问题