boost/asio服务器获取数据并打印地址转换为string

class session
{
public:
  session(boost::asio::io_service& io_service)
    : socket_(io_service)
  {
  }


  tcp::socket& socket()
  {
    return socket_;
  }


  void start()
  {
 sepstate.dataRiginAddr.assign(socket_.remote_endpoint().address().to_string());


 socket_.async_read_some(boost::asio::buffer(Message),
        boost::bind(&session::handle_read, this,
          boost::asio::placeholders::error,
          boost::asio::placeholders::bytes_transferred));
  }


private:
  void handle_read(const boost::system::error_code& error,
      size_t bytes_transferred)
  {
    if (!error)
    {
    cout<<" Data From: "<<socket_.remote_endpoint().address()<<endl;
    cout<<"semaphore added"<<Message<<endl;
    statebuffer.semaphore++ ;
    start();
    }
    else
    {
    cout<<error.message()<<endl;
    delete this;
    }
  }


  void handle_write(const boost::system::error_code& error)
  {
    if (!error)
    {
      //boost::asio::async_write(socket_,
             //   boost::asio::buffer(data_, bytes_transferred),
               // boost::bind(&session::handle_write, this,
                 // boost::asio::placeholders::error));
    }
    else
    {
      delete this;
    }
  }
  tcp::socket socket_;
};


class server
{
public:
  server(boost::asio::io_service& io_service , unsigned int port)
    : io_service_(io_service),
      acceptor_(io_service, tcp::endpoint(tcp::v4(), port))
  {
    start_accept();
  }


private:
  void start_accept()
  {
    session* new_session = new session(io_service_);
    acceptor_.async_accept(new_session->socket(),
        boost::bind(&server::handle_accept, this, new_session,
          boost::asio::placeholders::error));
  }


  void handle_accept(session* new_session,
      const boost::system::error_code& error)
  {
    if (!error)
    {
cout<<"Client Come"<<endl<<endl;
new_session->start();
    }
    else
    {
      delete new_session;
    }


    start_accept();
  }


  boost::asio::io_service& io_service_;
  tcp::acceptor acceptor_;
};


int main_TCP_Client()
{
  try
  {
io_service iosev;
stringstream stream ; uint port_buffer ;
stream<<statebuffer.data_origin_port;
stream>>port_buffer ;


server tcp_client(iosev,port_buffer) ;
iosev.run();


return 0 ;
  }
  catch (std::exception& e)
  {
    std::cerr << "Exception: " << e.what() << "\n";
  }


  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值