Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | None | 0 0
  1. #include <ctime>
  2. #include <iostream>
  3. #include <string>
  4. #include <boost/asio.hpp>
  5. #pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS
  6.  
  7. using boost::asio::ip::tcp;
  8.  
  9. std::string make_daytime_string()
  10. {
  11.     using namespace std; // For time_t, time and ctime;
  12.     time_t now = time(0);
  13.     return ctime(&now);
  14. }
  15.  
  16. int main()
  17. {
  18.     std::cout << "[TCP Synchronous Server]" << std::endl;
  19.     try
  20.     {
  21.         boost::asio::io_service io_service;
  22.  
  23.         tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), 13));
  24.  
  25.         for (;;)
  26.         {
  27.             boost::system::error_code error;
  28.             tcp::socket socket(io_service);
  29.             acceptor.accept(socket);
  30.             std::cout << "Client Connection Established. IP: " + socket.remote_endpoint().address().to_string() + " Port: " << socket.remote_endpoint().port() << "." << std::endl;
  31.  
  32.             //Send Data
  33.             std::string message = make_daytime_string();
  34.             boost::asio::write(socket, boost::asio::buffer(message), error);
  35.  
  36.             //Receive Data
  37.             std::array<char, 256> input_buffer;     //Storage for received data
  38.             std::size_t rsize = socket.read_some(boost::asio::buffer(input_buffer), error);
  39.             std::string ReceivedData(input_buffer.data(), input_buffer.data() + rsize); //Initializing received data into string variable
  40.             std::cout.write(input_buffer.data(), rsize);
  41.  
  42.  
  43.             if (error == boost::asio::error::eof)
  44.             {
  45.                 std::cerr << "EOF Error" << std::endl;
  46.                 break; // Connection closed cleanly by peer.
  47.             }
  48.             else if (error)
  49.             {
  50.                 std::cerr << "Other Error" << std::endl;
  51.                 throw boost::system::system_error(error); // Some other error.
  52.             }
  53.         }
  54.     }
  55.     catch (std::exception& e)
  56.     {
  57.         std::cerr << "Catch Error" << std::endl;
  58.         std::cerr << e.what() << std::endl;
  59.     }
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement