43 std::cout <<
"=== TCP Client Example ===" << std::endl;
47 constexpr uint16_t port = 9000;
48 const std::string host =
"127.0.0.1";
50 auto client = tcp.create_client({
53 .client_id =
"ExampleClient",
57 client->set_receive_callback([](
const std::vector<uint8_t>& data) {
58 std::string
message(data.begin(), data.end());
59 std::cout <<
"[Client] Received: " <<
message << std::endl;
63 client->set_connected_callback([]() {
64 std::cout <<
"[Client] Connected to server." << std::endl;
67 client->set_disconnected_callback([]() {
68 std::cout <<
"[Client] Disconnected from server." << std::endl;
72 client->set_error_callback([](std::error_code ec) {
73 std::cerr <<
"[Client] Error: " << ec.message() << std::endl;
77 std::cout <<
"[Client] Connecting to " << host <<
":" << port <<
"..." << std::endl;
79 auto connect_result = client->start(host, port);
80 if (connect_result.is_err()) {
81 std::cerr <<
"[Client] Connection failed: " << connect_result.error().message
87 std::this_thread::sleep_for(std::chrono::milliseconds(200));
90 if (!client->is_connected()) {
91 std::cerr <<
"[Client] Not connected." << std::endl;
97 std::vector<std::string> messages = {
99 "This is a TCP client example.",
103 for (
const auto& msg : messages) {
104 std::vector<uint8_t> data(msg.begin(), msg.end());
105 std::cout <<
"[Client] Sending: " << msg << std::endl;
107 auto send_result = client->send(std::move(data));
108 if (send_result.is_err()) {
109 std::cerr <<
"[Client] Send failed: " << send_result.error().message
114 std::this_thread::sleep_for(std::chrono::milliseconds(500));
118 std::cout <<
"[Client] Sending binary data..." << std::endl;
119 std::vector<uint8_t> binary_data = {0x01, 0x02, 0x03, 0x04, 0xFF};
120 auto binary_result = client->send(std::move(binary_data));
121 if (binary_result.is_err()) {
122 std::cerr <<
"[Client] Binary send failed: " << binary_result.error().message
127 std::this_thread::sleep_for(std::chrono::milliseconds(500));
130 std::cout <<
"[Client] Disconnecting..." << std::endl;
131 auto stop_result = client->stop();
132 if (stop_result.is_err()) {
133 std::cerr <<
"[Client] Stop error: " << stop_result.error().message << std::endl;
136 std::cout <<
"[Client] Done." << std::endl;