蔡家坡网站开发,网站图片文字排版错误,网站建设教育板块,seo课程哪个好折腾了一上午#xff0c;看到这个结果的时候泪目了兄弟闷#xff0c;讲真。我的asio客户端成功收到服务端发来的消息了。虽然这确实是极其智障又简单的入门哈哈
下载独立版本 asio网络通信库新建cmake工程#xff0c;CMakeLists.txt加载asioasio最简单的服务端和客户端代码… 折腾了一上午看到这个结果的时候泪目了兄弟闷讲真。我的asio客户端成功收到服务端发来的消息了。虽然这确实是极其智障又简单的入门哈哈
下载独立版本 asio网络通信库新建cmake工程CMakeLists.txt加载asioasio最简单的服务端和客户端代码编写
下载独立版本 asio网络通信库
链接https://pan.baidu.com/s/1T3aUf3yZbn0nTGi19_RqYA 提取码1234
文件7zip压缩包下载用7zip解压就是一个asio文件夹里面包含了asio所有头文件源码。独立版的asio是header-only所以使用时只需包含头文件即可。把解压得到的asio文件夹放到项目目录里。
新建cmake工程CMakeLists.txt加载asio
VS新建CMake工程或VSCode新建CMake工程都可以。编写CMakeLists.txt将下载解压的asio文件夹添加到头文件搜索目录里用工程main函数将服务端和客户端的源码文件链接生成可执行文件即可。 CMakeLists.txt源码
# CMakeList.txt: CMakeProject1 的 CMake 项目在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)project (CMakeProject1)## 威力很大
include_directories(/asio)# 将源代码添加到此项目的可执行文件。
add_executable (CMakeProject1 CMakeProject1.cpp CMakeProject1.h)if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET CMakeProject1 PROPERTY CXX_STANDARD 20)
endif()
asio最简单的服务端和客户端代码编写
asio简单的服务端和客户端的代码网上一搜一帕拉也可参照以下代码编写。 服务端代码 try{asio::io_service io_service;tcp::acceptor acceptor(io_service, tcp::endpoint(asio::ip::address::from_string(127.0.0.1), 2121));for (;;){tcp::socket socket(io_service);acceptor.accept(socket);asio::write(socket, asio::buffer(std::string(欢迎来到 Asio的世界 我们一起愉快地探索下去吧)));}}catch (std::exception e){std::cerr e.what() std::endl;}客户端代码 try{asio::io_service io_service;tcp::resolver resolver(io_service);tcp::resolver::query query(127.0.0.1, 2121);tcp::resolver::iterator endpoint_iterator resolver.resolve(query);tcp::endpoint endpoint *endpoint_iterator;std::cout endpoint \n\n;tcp::socket socket(io_service);asio::connect(socket, endpoint_iterator);for (;;){arraychar, 128 buf;buf.fill(\0);size_t len socket.read_some(asio::buffer(buf));std::cout buf.data() std::endl;}}catch (std::exception e){std::cerr e.what() std::endl;}CMakeProject1.cpp 完整源文件
// CMakeProject1.cpp: 定义应用程序的入口点。
//#include CMakeProject1.husing namespace std;#include ./asio/asio.hppusing asio::ip::tcp;
#include ctime
#include iostream
#include string
#include iostream int main(int argc, char* argv[])
{#if 0asio::io_context io;asio::steady_timer t(io, asio::chrono::seconds(5));t.async_wait(print);std::cout hh std::endl;io.run();
#endifstd::string input;std::cin input;if (input.compare(server) 0){try{asio::io_service io_service;tcp::acceptor acceptor(io_service, tcp::endpoint(asio::ip::address::from_string(127.0.0.1), 2121));for (;;){tcp::socket socket(io_service);acceptor.accept(socket);asio::write(socket, asio::buffer(std::string(欢迎来到 Asio的世界 我们一起愉快地探索下去吧)));}}catch (std::exception e){std::cerr e.what() std::endl;}}else if(input.compare(client) 0){try{asio::io_service io_service;tcp::resolver resolver(io_service);tcp::resolver::query query(127.0.0.1, 2121);tcp::resolver::iterator endpoint_iterator resolver.resolve(query);tcp::endpoint endpoint *endpoint_iterator;std::cout endpoint \n\n;tcp::socket socket(io_service);asio::connect(socket, endpoint_iterator);for (;;){arraychar, 128 buf;buf.fill(\0);size_t len socket.read_some(asio::buffer(buf));std::cout buf.data() std::endl;}}catch (std::exception e){std::cerr e.what() std::endl;}std::cout \n\n;}return 0;
}
VS的cmake项目小技巧 可以对项目右键点击选择右键菜单“在终端中打开”打开终端输入命令开启服务端或客户端。如果是开发网络通信小Demo服务端和客户端放在一个工程中通过终端输入命令参数选择开启服务器或客户端比新建两个VS工程要简单方便些铁汁闷。