From cbbf4ab7e2e696331b1c73d536349c33529f52c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Mon, 1 Apr 2024 17:17:52 +0300 Subject: [PATCH] writing to socket --- boost_boilerplate/CMakeLists.txt | 5 +++ .../src/chapter02_io/writing_tcp_sync.cpp | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 boost_boilerplate/src/chapter02_io/writing_tcp_sync.cpp diff --git a/boost_boilerplate/CMakeLists.txt b/boost_boilerplate/CMakeLists.txt index 8088393..ae0cb51 100644 --- a/boost_boilerplate/CMakeLists.txt +++ b/boost_boilerplate/CMakeLists.txt @@ -73,3 +73,8 @@ add_executable(stream_oriented_buffers src/chapter02_io/stream_oriented_buffers.cpp src/sdk.h) target_link_libraries(stream_oriented_buffers PRIVATE Threads::Threads) + +add_executable(writing_tcp_sync + src/chapter02_io/writing_tcp_sync.cpp + src/sdk.h) +target_link_libraries(writing_tcp_sync PRIVATE Threads::Threads) diff --git a/boost_boilerplate/src/chapter02_io/writing_tcp_sync.cpp b/boost_boilerplate/src/chapter02_io/writing_tcp_sync.cpp new file mode 100644 index 0000000..96a0b47 --- /dev/null +++ b/boost_boilerplate/src/chapter02_io/writing_tcp_sync.cpp @@ -0,0 +1,40 @@ +#include +#include +#include + +using namespace boost; +using namespace std; + +void WriteToSocket(asio::ip::tcp::socket& sock) +{ + string buf = "Hello"s; + size_t total_bytes_written {}; + + while (total_bytes_written != buf.length()) + { + total_bytes_written += sock.write_some(asio::buffer(buf.c_str() + total_bytes_written, + buf.length() - total_bytes_written)); + } +} + +int main() +{ + string raw_ip_address = "127.0.0.1"; + size_t port_num = 3333; + + try + { + asio::ip::tcp::endpoint ep(asio::ip::address::from_string(raw_ip_address), port_num); + asio::io_service io_service; + asio::ip::tcp::socket sock(io_service, ep.protocol()); + + sock.connect(ep); + WriteToSocket(sock); + } + catch (const system::system_error& e) + { + cout << "Error! " << e.what() << endl; + } + + return EXIT_SUCCESS; +}