From c2ccaaf17e62b17dd3397494ce4bad4884ec29dc Mon Sep 17 00:00:00 2001 From: Kieran Kihn <114803508+kierankihn@users.noreply.github.com> Date: Sat, 29 Nov 2025 18:51:58 +0800 Subject: [PATCH] fix(network): ensure `disconnect` before `connect` in `NetworkClient` - Added `disconnect` method to gracefully close existing connections before establishing a new one. - Updated `connect` to call `disconnect` to prevent resource conflicts. --- src/network/NetworkClient.cpp | 9 +++++++++ src/network/NetworkClient.h | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/network/NetworkClient.cpp b/src/network/NetworkClient.cpp index 9a11692..51160a4 100644 --- a/src/network/NetworkClient.cpp +++ b/src/network/NetworkClient.cpp @@ -16,11 +16,20 @@ namespace UNO::NETWORK { void NetworkClient::connect(const std::string &host, uint16_t port) { + this->disconnect(); asio::ip::tcp::resolver resolver(io_context_); auto endpoints = resolver.resolve(host, std::to_string(port)); asio::connect(socket_, endpoints.begin(), endpoints.end()); } + void NetworkClient::disconnect() + { + if (socket_.is_open()) { + this->socket_.close(); + } + } + + void NetworkClient::send(const std::string &message) { size_t length = message.size(); diff --git a/src/network/NetworkClient.h b/src/network/NetworkClient.h index 0cc9357..c37a918 100644 --- a/src/network/NetworkClient.h +++ b/src/network/NetworkClient.h @@ -26,6 +26,11 @@ namespace UNO::NETWORK { */ void connect(const std::string &host, uint16_t port); + /** + * 关闭到服务端的连接 + */ + void disconnect(); + /** * 向服务端发送消息 * @param message 要发送的消息