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 and Unix domin TCP/UDP;
9. Support reliable UDP (base on KCP -- https://github.com/skywind3000/kcp);
10. 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 -