Эта учебная программа показывает, как использовать Asio для реализации серверного приложения с TCP.
#include <ctime>
#include <iostream>
#include <string>
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
Определяем функциюmake_daytime_string()
Чтобы создать строку, которая будет отправлена обратно клиенту. Эта функция будет повторно использоваться во всех наших дневных серверных приложениях.
std::string make_daytime_string()
{
using namespace std;
time_t now = time(0);
return ctime(&now);
}
int main()
{
try
{
boost::asio::io_service io_service;
Aip::tcp::acceptorОбъект должен быть создан для прослушивания новых связей. Он инициализируется для прослушивания на TCP-порте 13 для IP-версии 4.
tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), 13));
Это итерационный сервер, что означает, что он будет обрабатывать одно соединение за раз. Создайте розетку, которая будет представлять соединение с клиентом, а затем дождитесь соединения.
for (;;)
{
tcp::socket socket(io_service);
acceptor.accept(socket);
Клиент получает доступ к нашему сервису. Определите текущее время и передайте эту информацию клиенту.
std::string message = make_daytime_string();
boost::system::error_code ignored_error;
boost::asio::write(socket, boost::asio::buffer(message), ignored_error);
}
}
Наконец, обращайтесь с любыми исключениями.
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
См.полный список источников
Вернуться вучебный индекс
Предыдущее:Daytime.1 — синхронный дневной клиент TCP
Следующий:Daytime.3 — асинхронный TCP дневной сервер