Boost Asio总结(16)例子
生活随笔
收集整理的這篇文章主要介紹了
Boost Asio总结(16)例子
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
step1. 創(chuàng)建io_server實例(在Boost1.66后的版本為io_context)
boost::asio::io_service io_service;step2. 設(shè)置endpoint的地址ip和端口
unsigned short port = 8080;. 客戶端client
auto const address = boost::asio::ip::address_v4::from_string("192.168.0.123"); boost::asio::ip::tcp::endpoint endpoint(address,port);. server設(shè)置要接受連接的端口和協(xié)議類型
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(),port);//ipv4,偵聽端口8080step3.創(chuàng)建socket實例
boost::asio::ip::tcp::socket socket(io_service);.客戶端client,建立到endpoint的socket連接
socket.connect(endpoint);//同步 socket.async_connect(endpoint,[](){});//異步,需要回調(diào)函數(shù),這里使用的是lambda表達式. 服務(wù)器端server
//創(chuàng)建acceptor實例,并開始偵聽Socket連接 acceptor.accept(socket)//同步,運行到此處時會阻塞線程知道偵聽到client的連接請求 socket.async_accept(socket,[](){});//異步,需要回調(diào)函數(shù),這里使用的是lambda表達式step4.對Socket進行讀寫操作,客戶端相同
boost::asio::write(socket,boost::asio::buffer("hello world!")); //向socket中寫入字符std::cout<<socket.available()<<std::endl; //獲取可讀取的字節(jié)數(shù) std::vector<char> str(socket.available()+1,0); //定義一個vector緩沖區(qū) socket.receive(boost::asio::buffer(str)); //使用buffer()包裝緩沖區(qū)并接收數(shù)據(jù) std::cout<<"client received: "<<&str[0]<<std::endl;//輸出接收到的字符串總結(jié)
以上是生活随笔為你收集整理的Boost Asio总结(16)例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL源代码分析(ch 1)组态1
- 下一篇: kth (1)概述