From ed93a7c237ec1e0ac12fe324ff01fb097a9cb4b7 Mon Sep 17 00:00:00 2001 From: azw Date: Sat, 6 May 2023 14:21:34 +0000 Subject: [PATCH] 1 --- a8/asiotcpclient.cc | 24 +++++++++++++++++------- a8/asiotcpclient.h | 11 +++++++---- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/a8/asiotcpclient.cc b/a8/asiotcpclient.cc index 2ebd599..f9e2d0e 100644 --- a/a8/asiotcpclient.cc +++ b/a8/asiotcpclient.cc @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -14,8 +15,15 @@ const int MAX_RECV_BUFFERSIZE = 1024 * 64; namespace a8 { - AsioTcpClient::AsioTcpClient() + AsioTcpClient::AsioTcpClient(const std::string& remote_ip, int remote_port) { + remote_address_ = remote_ip; + remote_port_ = remote_port; + endpoint_ = std::make_shared + ( + asio::ip::make_address(remote_address_), + remote_port_ + ); send_buffer_mutex_ = std::make_shared(); io_context_ = std::make_shared(); resolver_ = std::make_shared(*io_context_); @@ -90,17 +98,15 @@ namespace a8 { actived_ = true; connected_ = false; - tcp::resolver::results_type endpoints = resolver_->resolve - (tcp::v4(), - remote_address.c_str(), - a8::XValue(remote_port).GetString().c_str()); + #if 0 asio::async_connect(*socket_, endpoints, [this] (const asio::error_code& ec, const tcp::endpoint& endpoint) { HandleConnect(ec, endpoint); }); + #endif } void AsioTcpClient::ActiveStop() @@ -185,8 +191,12 @@ namespace a8 void AsioTcpClient::WorkerThreadProc() { while (true) { - io_context_->run(); - int i = 0; + try { + io_context_->run(); + int i = 0; + } catch (std::exception& e) { + std::cerr << "Exception: " << e.what() << "\n"; + } } } diff --git a/a8/asiotcpclient.h b/a8/asiotcpclient.h index 6cbcb23..8197a90 100644 --- a/a8/asiotcpclient.h +++ b/a8/asiotcpclient.h @@ -16,11 +16,10 @@ namespace a8 std::function on_connect; std::function on_disconnect; std::function on_socketread; - std::string remote_address; - int remote_port = 0; - - AsioTcpClient(); + AsioTcpClient(const std::string& remote_ip, int remote_port); virtual ~AsioTcpClient(); + const std::string& GetRemoteAddress() { return remote_address_; } + int GetRemotePort() { return remote_port_; } void Open(); void Close(); @@ -35,6 +34,10 @@ namespace a8 void WorkerThreadProc(); private: + std::string remote_address_; + int remote_port_ = 0; + + std::shared_ptr endpoint_; std::shared_ptr io_context_; std::shared_ptr resolver_; std::shared_ptr socket_;