c++ - reading from boost asio socket and printing to terminal -
i want use boost asio sockets send message server client , print out client terminal. trying send message "hello". doesn't work. how can fix this? thanks!
client:
#include <boost/asio.hpp> #include <iostream> #include <string> using namespace std; int main (int argc, char* argv[]) { try { boost::asio::io_service io_service; boost::asio::ip::tcp::resolver::query query("localhost", "41005"); boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::iterator destination = resolver.resolve(query); boost::asio::ip::tcp::resolver::iterator end ; boost::asio::ip::tcp::endpoint endpoint; while ( destination != end ) { endpoint = *destination++; std::cout<<endpoint<<std::endl; } boost::asio::ip::tcp::socket socket(io_service); socket.connect(endpoint); boost::array< char, 128 > buf; boost::system::error_code error; std::size_t length = boost::asio::read(socket, boost::asio::buffer(buf, 512), boost::asio::transfer_all(), error); cout << length; } catch (std::exception& e) { std::cerr << e.what() << std::endl; } return 0; }
server:
#include <boost/asio.hpp> #include <iostream> #include <string> using namespace std; int main () { try { boost::asio::io_service io_service; boost::asio::ip::tcp::acceptor acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 41005)); (; ;) { std::cout<<"listening to"<<std::endl; boost::asio::ip::tcp::socket socket(io_service); acceptor.accept(socket); std::string message = "hello"; boost::system::error_code ignored_error; boost::asio::write(socket, boost::asio::buffer(message), boost::asio::transfer_all(), ignored_error); } } catch (std::exception& e) { std::cerr << e.what() << std::endl; } return 0;
}
classic error: "acceptor.accept" method blocking call, hello part never called.
our cout friend you, allways:
... std::cout<<"sending hello"<
Comments
Post a Comment