boost tcp 同步方式 笔记

来源:互联网 发布:免费注册域名活动 编辑:程序博客网 时间:2024/06/05 02:04
原代码来自:<a target=_blank href="http://www.cppblog.com/janvy/archive/2010/03/24/110478.html">http://www.cppblog.com/janvy/archive/2010/03/24/110478.html</a>
有小小修改
</pre><pre name="code" class="cpp"><span style="font-size:24px;">// server 端#include <iostream>#include <boost\asio.hpp>int main(int argc, char *argv[]){// 所有的asio 类都需要io_service 对象boost::asio::io_service iosev;boost::asio::ip::tcp::acceptor acceptor( iosev,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 1000) );while (1){// socket 对象boost::asio::ip::tcp::socket socket(iosev);// 等待,直到客户端的连接acceptor.accept(socket);<span style="white-space:pre"></span>// 测试过该函数,似乎仅一次有效,所以它会在while() 循环内部调用。// 显示连接进来的客户端std::cout << socket.remote_endpoint().address() << std::endl;// 向客户端发送"Hello world!"boost::system::error_code ec;socket.write_some(boost::asio::buffer("Hello world!"), ec);// 如果出错,打印错误信息if (ec){std::cout << boost::system::system_error(ec).what() << std::endl;break;}}return 0;}</span>
<span style="font-size:24px;">// client 端#include <iostream>#include <boost\asio.hpp>int main(int argc, char *argv[]){// 所有asio 类都需要io_service 对象boost::asio::io_service iosev;// socket 对象boost::asio::ip::tcp::socket socket(iosev);// 连接端点,这里使用了本机连接,可以修改IP 地址测试远程连接boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address_v4::from_string("127.0.0.1"), 1000);// 连接服务器boost::system::error_code ec;socket.connect(ep, ec);// 如果出错,打印出错信息if (ec){std::cout << boost::system::system_error(ec).what() << std::endl;return -1;}// 接收数据char buf[100];size_t len = socket.read_some(boost::asio::buffer(buf), ec);std::cout.write(buf, len);return 0;}</span>


0 0