概述
Asio
是一个跨平台的C++库,用于网络和低级I / O编程 为开发人员提供一致的异步模型,使用现代 C++方法。
当针对C ++ 11(或更高版本)时,大多数asio都可以在没有任何额外依赖项的情况下使用。独立版的asio是header-only,所以使用时只需包含头文件即可。把解压得到的include目录(包含asio.hpp)放到项目目录里。
相关链接
下载
下载地址1 我这里选择的是1_24_0版本,下载之后解压。
编译
编译环境
- Windows
- gcc version 7.3.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
- vscode cmake插件
- cmake
编译自测试用例
进入源码路径
cd asio-1.24.0
code ./
新建main.cpp
#include <iostream>
#include "asio.hpp"
void print(const asio::error_code& /*e*/)
{
std::cout << "Hello, world!" << std::endl;
}
int main()
{
asio::io_context io;
asio::steady_timer t(io, asio::chrono::seconds(5));
t.async_wait(&print);
std::cout<<"hh"<<std::endl;
io.run();
return 0;
}
因为独立版的asio是header-only,所以使用时只需包含头文件即可
新建CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(asiotest VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ASIO_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
target_compile_options(${CMAKE_PROJECT_NAME} PUBLIC -DASIO_STANDALONE)
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${ASIO_INCLUDE})
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${ASIO_INCLUDE}/../src/examples/cpp11/chat)
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC -lwsock32 -lws2_32)
使用CMake Tools
插件编译,运行测试程序。
编译官方样例程序
进入examples路径(cpp11/chat)
cd ./src/examples/cpp11/chat
code ./
新建CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(chat VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ASIO_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/../../../../include)
file(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
foreach(file ${files})
get_filename_component(name ${file} NAME)
string(REPLACE ".cpp" "" exe_name ${name})
add_executable(${exe_name} ${file})
target_compile_options(${exe_name} PUBLIC -DASIO_STANDALONE)
target_include_directories(${exe_name} PUBLIC ${ASIO_INCLUDE})
target_link_libraries(${exe_name} PUBLIC -lwsock32 -lws2_32)
endforeach()
编译
使用CMake Tools
插件编译之后,会在build
目录下生成两个可执行程序chat_server.exe
和chat_client.exe
运行
打开两个cmd窗口, 分别输入以下命令:
chat_server.exe 127.0.0.1 50000
chat_client.exe 127.0.0.1 50000