Guest User

Untitled

a guest
Aug 20th, 2016
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. #include <iostream>
  2. #include <boost/array.hpp>
  3. #include <boost/bind.hpp>
  4. #include <boost/asio.hpp>
  5.  
  6. using boost::asio::ip::tcp;
  7.  
  8. std::string make_daytime_string()
  9. {
  10. using namespace std; // For time_t, time and ctime;
  11. time_t now = time(0);
  12. return ctime(&now);
  13. }
  14.  
  15. class Connection
  16. {
  17. public:
  18. Connection(boost::asio::io_service& io) : _socket(io){}
  19.  
  20. void connect(tcp::resolver::iterator& point)
  21. {
  22. boost::asio::async_connect(_socket, point, boost::bind(&Connection::onConnected, this, boost::asio::placeholders::error));
  23. }
  24.  
  25. void onConnected(const boost::system::error_code& ErrorCode)
  26. {
  27. std::cout << "You are connected" << std::endl;
  28.  
  29. // receive first message on onReceive
  30. boost::asio::async_read(_socket, boost::asio::buffer(_buffer), boost::bind(&Connection::onReceive, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
  31. }
  32.  
  33. void onSend(const boost::system::error_code& ErrorCode, std::size_t bytes_transferred)
  34. {
  35. std::cout << "Sending..." << std::endl;
  36. }
  37.  
  38. void onReceive(const boost::system::error_code& ErrorCode, std::size_t bytes_transferred)
  39. {
  40. std::cout << "You received the following message from the server:" << std::endl;
  41. std::cout.write(_buffer.data(), bytes_transferred);
  42.  
  43. // send first message on onSend
  44. m_message = make_daytime_string();
  45. boost::asio::async_write(_socket, boost::asio::buffer(m_message), boost::bind(&Connection::onSend, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
  46. }
  47.  
  48. tcp::socket& getSocket()
  49. {
  50. return _socket;
  51. }
  52. private:
  53. tcp::socket _socket;
  54. boost::array<char, 126> _buffer;
  55. std::string m_message;
  56. };
  57.  
  58. int main()
  59. {
  60. try
  61. {
  62. boost::asio::io_service io_service;
  63.  
  64. tcp::resolver resolver(io_service);
  65.  
  66. tcp::resolver::query query("127.0.0.1", "7171");
  67.  
  68. tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
  69.  
  70. Connection conn(io_service);
  71. conn.connect(endpoint_iterator);
  72.  
  73. io_service.run();
  74. }
  75. catch (std::exception& e)
  76. {
  77. std::cerr << e.what() << std::endl;
  78. }
  79.  
  80. return 0;
  81. }
Add Comment
Please, Sign In to add comment