Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 24th, 2012  |  syntax: None  |  size: 0.87 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to get rid of accept: Already open exception in boost::asio server
  2. class Server{
  3.     public:
  4.  
  5. Server(unsigned short port, ConcurrentQueue<uint8_t*>*queueToServer, unsigned int width, unsigned int height):mSocket(mIOService),mAcceptor(mIOService,ip::tcp::endpoint(ip::tcp::v4(), port)),mQueue(queueToServer), dSize(width*height*3){}
  6. void run(){
  7.  
  8.     unsigned char* data;
  9.     boost::system::error_code ignored_error;
  10.     while(true){
  11.         if (mQueue->try_pop(data)){
  12.             const mutable_buffer image_buffer(data, dSize);
  13.             //if (!mSocket.is_open())
  14.             mAcceptor.accept(mSocket);
  15.             boost::asio::write(mSocket, buffer(image_buffer), transfer_all(), ignored_error);
  16.         }
  17.     }
  18. }
  19. private:
  20.     io_service mIOService;
  21.     ip::tcp::socket mSocket;
  22.     ip::tcp::acceptor mAcceptor;
  23.     ConcurrentQueue<uint8_t*>* mQueue;
  24.     std::size_t dSize;
  25. };