# st_asio_wrapper **Repository Path**: big_data_enthusiasts/st_asio_wrapper ## Basic Information - **Project Name**: st_asio_wrapper - **Description**: 基于boost.asio的c/s框架 - **Primary Language**: C++ - **License**: BSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 16 - **Created**: 2020-08-14 - **Last Updated**: 2024-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README st_asio_wrapper =============== Overview - st_asio_wrapper is an asynchronous c/s framework based on Boost.Asio, besides all benefits brought by Boost and Boost.Asio, it also contains:
1. Based on message just like UDP with several couple of build-in packer and unpacker;
2. Support packer and unpacker customization, and replacing packer and unpacker at run-time;
3. Automatically reconnect to the server after link broken;
4. Support object pool, object reusing and restoration;
5. Worker thread management;
6. Support message buffer;
7. Widely support timers;
8. Support TCP/UDP;
9. Support ssl;
Quick start: - ### server: Derive your own socket from `server_socket_base`, you must at least re-write `on_msg_handle` virtual function and handle messages in it;
Create a `service_pump` object, create a `server_base` object, call `service_pump::start_service`;
Call `server_socket_base::send_msg` or `server_base::broadcast_msg` when you have messages need to send.
### client: Derive your own socket from `client_socket_base`, you must at least re-write the `on_msg` or `on_msg_handle` virtual function and handle messages in it;
Create a `service_pump` object, create a `multi_client_base` object, add some socket via `multi_client_base::add_socket`, call `service_pump::start_service`;
Call `client_socket_base::send_msg` or `multi_client_base::broadcast_msg` when you have messages need to send.
Directory structure: - All source codes are placed in directory `include`, other directories hold demos, for documents, please refer to this project https://github.com/youngwolf-project/ascs/ .
Demos: - ### echo_server: Demonstrate how to implement tcp servers, it cantains two servers, one is the simplest server (normal server), which just send characters from keyboard to all clients (from `client` demo), and receive messages from all clients (from `client` demo), then display them; the other is echo server, which send every received message from `echo_client` demo back.
### client: Demonstrate how to implement tcp client, it simply send characters from keyboard to normal server in `echo_server`, and receive messages from normal server in `echo_server`, then display them.
### echo_client: Used to test `st_asio_wrapper`'s performance (whith `echo server`).
### file_server: A file transfer server.
### file_client: A file transfer client, use `get [file name2] [...]` to fetch files from `file_server`.
### udp_client: Demonstrate how to implement UDP communication.
### ssl_test: Demonstrate how to implement TCP communication with ssl.
Compiler requirement: - No special limitations, just need you to compile boost successfully.
Boost requirement: - 1.49 or highter.
email: mail2tao@163.com - Community on QQ: 198941541 -