C++ Boost ASIO: how to read/write with a timeout?

后端 未结 2 1266
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-08 11:07

From reading other Stack Overflow entries and the boost::asio documentation, I\'ve confirmed that there is no synchronous ASIO read/write calls that also provid

2条回答
  •  南笙
    南笙 (楼主)
    2020-12-08 11:21

    I used some asio docs to produce this:

    class TimeoutAdjust
    {
    public:
      TimeoutAdjust(unsigned int dwTimeout) : m_dwTimeout(dwTimeout) {};
    
      template
      int level(const Protocol& p) const {return SOL_SOCKET;}
    
      template
      int name(const Protocol& p) const {return SO_SNDTIMEO;}
    
      template
      const void* data(const Protocol& p) const {return &m_dwTimeout;}
    
      template
      size_t size(const Protocol& p) const {return sizeof(m_dwTimeout);}
    private:
      unsigned int m_dwTimeout;
    };
    

    Usage:

    TimeoutAdjust adjust(5000);
    sSocket.set_option(adjust);
    

    I debugged it, and it appears to do what it is supposed to.

提交回复
热议问题