#include#include using namespace boost::asio; int main() { io_service service; ip::tcp::endpoint endpoint(ip::tcp::v4(), 5555); ip::tcp::acceptor acceptor(service, endpoint); while (true) { ip::tcp::socket socket(service); acceptor.accept(socket); std::cout << "Accepted connection from " << socket.remote_endpoint() << std::endl; char data[1024]; size_t len = socket.read_some(buffer(data, 1024)); write(socket, buffer(data, len)); } }
#includeThis code creates a HTTP client that connects to www.boost.org and retrieves the home page. It uses the `transfer_at_least` option to ensure that the `read` function returns as soon as it receives any data, rather than waiting for the entire response. Boost.Asio is a part of the Boost C++ Libraries package.#include using namespace boost::asio; using namespace boost::asio::ip; int main() { io_service service; tcp::resolver resolver(service); tcp::socket socket(service); tcp::resolver::query query("www.boost.org", "http"); tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); connect(socket, endpoint_iterator); std::string request = "GET / HTTP/1.0\r\nHost: www.boost.org\r\n\r\n"; write(socket, buffer(request)); std::string response; boost::system::error_code error; while (read(socket, buffer(response), transfer_at_least(1), error)) { std::cout << response; response.clear(); } if (error != error::eof) { std::cerr << "Error: " << error.message() << std::endl; } }