Почему boost async_connect не вызывает мой обратный вызов? ⇐ C++
-
Гость
Почему boost async_connect не вызывает мой обратный вызов?
Я пытаюсь реализовать своего рода клиент протокола системного журнала в boost asio. Мне удалось создать асинхронную версию UDP, и я пытаюсь разработать версию TCP, но застрял. Я использовал WinSyslog и Debian rsyslog в качестве сервера, а Wireshark — для управления потоком данных.
Я написал класс TcpConnection и подготовил для него тестовые данные. Я использую TCP-сокет Boost Asio и ожидаю, что пакет будет отправлен с использованием обработчиков подключения и отправки, но обработчик подключения не был вызван.
Моя реализация:
класс TcpConnection , public boost::enable_shared_from_this { публика: TcpConnection( boost::asio::io_service& io_service, uint32_t, порт uint16_t) : m_socket(io_service) , m_ep(boost::asio::ip::address_v4(to), порт) { m_socket.open(boost::asio::ip::tcp::v4()); } void SendMessageAsync(const boost::asio::const_buffer& message) переопределить { /* boost::system::error_code ec; m_socket.connect(m_ep, ec); m_socket.send(сообщение, 0, ec);*/ m_socket.async_connect(m_ep, boost::bind(&TcpConnection::HandleConnect,shared_from_this(), boost::asio::placeholders::error, message)); } частный: void HandleConnect (boost::system::error_code const& ec, const boost::asio::const_buffer& message) { если (!ec) { ec.сообщение(); } еще { m_socket.async_send(сообщение, boost::bind(&TcpConnection::HandleWritten,shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } } void HandleWritten (boost::system::error_code const& ec, size_t bytes_transferred) { если (!ec) { EKA_TRACE_ERROR()
Я пытаюсь реализовать своего рода клиент протокола системного журнала в boost asio. Мне удалось создать асинхронную версию UDP, и я пытаюсь разработать версию TCP, но застрял. Я использовал WinSyslog и Debian rsyslog в качестве сервера, а Wireshark — для управления потоком данных.
Я написал класс TcpConnection и подготовил для него тестовые данные. Я использую TCP-сокет Boost Asio и ожидаю, что пакет будет отправлен с использованием обработчиков подключения и отправки, но обработчик подключения не был вызван.
Моя реализация:
класс TcpConnection , public boost::enable_shared_from_this { публика: TcpConnection( boost::asio::io_service& io_service, uint32_t, порт uint16_t) : m_socket(io_service) , m_ep(boost::asio::ip::address_v4(to), порт) { m_socket.open(boost::asio::ip::tcp::v4()); } void SendMessageAsync(const boost::asio::const_buffer& message) переопределить { /* boost::system::error_code ec; m_socket.connect(m_ep, ec); m_socket.send(сообщение, 0, ec);*/ m_socket.async_connect(m_ep, boost::bind(&TcpConnection::HandleConnect,shared_from_this(), boost::asio::placeholders::error, message)); } частный: void HandleConnect (boost::system::error_code const& ec, const boost::asio::const_buffer& message) { если (!ec) { ec.сообщение(); } еще { m_socket.async_send(сообщение, boost::bind(&TcpConnection::HandleWritten,shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } } void HandleWritten (boost::system::error_code const& ec, size_t bytes_transferred) { если (!ec) { EKA_TRACE_ERROR()
Мобильная версия