http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio/

可以多个线程拥有io_service service; service.run();
但是不能一个线程运行多个service.run();

Boost.Asio c++ 网络编程翻译(1)

http://blog.csdn.net/mmoaay/article/details/39371939

// Server.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/thread.hpp>
#include <windows.h> using namespace boost::asio; const size_t defaultLoopTime = 10000;
const size_t defaultSendLength = 1024 * 10 * 50;
const short int defaultPort = 8001; /**************************************************************
技术博客
http://www.cnblogs.com/itdef/ 技术交流群
群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
**************************************************************/ int main()
{
io_service service;
ip::tcp::acceptor acceptor(service, ip::tcp::endpoint(ip::tcp::v4(), defaultPort)); boost::shared_ptr<char> msgPtr(new char[defaultSendLength]);
for (size_t i = 0; i < defaultSendLength; i++)
{
msgPtr.get()[i] = "0123456789abcdef"[i % 16];
}
ip::tcp::socket sock(service);
acceptor.accept(sock); try {
for (int i = 0; i < defaultLoopTime; i++)
{
boost::system::error_code ec;
size_t bytes = write(sock, buffer(msgPtr.get(), defaultSendLength), ec);
assert(bytes == defaultSendLength);
if (ec == boost::asio::error::eof)
break; // Connection closed cleanly by peer.
else if (ec)
throw boost::system::system_error(ec); // Some other error.
}
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
} system("pause");
return 0;
}

  

// Client.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/thread.hpp>
#include <iostream> #include <windows.h> /**************************************************************
技术博客
http://www.cnblogs.com/itdef/ 技术交流群
群号码:324164944 欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
**************************************************************/ using namespace boost::asio;
using namespace std; const size_t defaultLoopTime = 10000;
const size_t defaultSendLength = 1024 * 10 * 50;
const short int defaultPort = 8001; int main()
{
io_service service;
ip::tcp::endpoint ep(ip::address::from_string("192.168.3.79"), defaultPort);
ip::tcp::socket sock(service);
sock.connect(ep);
time_t timer1;
time(&timer1); try {
for (size_t i = 0; i < defaultLoopTime; i++)
{
boost::shared_ptr<char> msgPtr(new char[defaultSendLength]);
boost::system::error_code ec;
size_t bytes = read(sock, buffer(msgPtr.get(), defaultSendLength), ec);
assert(bytes == defaultSendLength);
if (ec == boost::asio::error::eof)
break; // Connection closed cleanly by peer.
else if (ec)
throw boost::system::system_error(ec); // Some other error.
}
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
return -1;
} time_t timer2;
time(&timer2);
double elapsed = difftime(timer2, timer1);
std::cout << "time elapsed: "<< elapsed << "seconds." << std::endl;
double total_mb = 1.0 * defaultSendLength*defaultLoopTime / 1024 / 1024; std::cout << total_mb/ elapsed << "Mb/s." << std::endl; system("pause");
return 0;
}

  

boost::asio 学习草稿的更多相关文章

  1. boost asio 学习(一)io_service的基础

    原文  http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio/ 编译环境 b ...

  2. boost asio 学习(九) boost::asio 网络封装

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=10 9. A ...

  3. boost asio 学习(八) 网络基础 二进制写发送和接收

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=9 8. Net ...

  4. boost asio 学习(七) 网络基础 连接器和接收器(TCP示例)

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=8 7. Net ...

  5. boost asio 学习(六) 定时器

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=7 6 定时器 ...

  6. BOOST ASIO 学习专贴

    本文已于20170903更新完毕,所有boost asio 代码均为本人手抄.编译器为vs2013,并且所有代码已经上传,本文下方可下载源码 为了学习boost asio库,我是从boost的官方bo ...

  7. boost::asio 学习

    安装 下载-解压 指定安装目录 ./bootstrap.sh --prefix=/usr/local/boost_1_68_0 查看所有必须要编译才能使用的库 ./b2 --show-librarie ...

  8. boost asio 学习(五) 错误处理

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=6 5. Erro ...

  9. boost asio 学习(四)使用strand将任务排序

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=5 4. Seri ...

随机推荐

  1. python入门-用户输入

    1 input()函数来实现用户输入,程序在等待输入的时候会终止,获取用户的输入后继续 message = input("tell me something,and I will repre ...

  2. 在 WampServer 上手工安装 PHP 的多个版本

    手工安装新版本的PHP,只需以下步骤: 下载要安装的PHP版本.既然是用WampServer,那当然是下载Window版本的ZIP包啦:http://windows.php.net.解压到 Wamp的 ...

  3. Eclipse 工程使用相对路径导入Jar包设置

    环境:MyEclipse 6.5 问题:MyEclipse 工程使用相对路径导入Jar包 我们在导入工程时,往往添加Jar都是使用的绝对路径,但这带来了一个问题,不同的用户使用工程都得重新配置Buil ...

  4. ABAP-动态ALV

    1.参数定义 "ALV type-pools:slis,rsds,vrm. data:gt_fieldcat type lvc_t_fcat with header line, gt_eve ...

  5. mongodb基础学习7-备份与恢复

    下面来讲讲mongodb的备份与恢复 备份可以备份为二进制格式,如果是用于数据交换,可以备份成json或cvs格式 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的. 所以,都有如下通 ...

  6. shell中的条件判断以及与python中的对比

    shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then          ...

  7. JSP通过表格显示数据库的信息

    [step one] 1-1 建立数据库 在jsp中,我们使用的是mysql数据库,对于此数据的优缺点本篇不予以讲述,首先建立news数据库,其数据库中表的信息为: eg:< id :1 ; n ...

  8. Typora快捷键的使用

    无序列表:输入-之后输入空格 有序列表:输入数字+“.”之后输入空格 任务列表:-[空格]空格 文字 标题:ctrl+数字 表格:ctrl+t 生成目录:[TOC]按回车 选中一整行:ctrl+l 选 ...

  9. grep匹配字符串出现的次数

    背景:想要匹配一个html页面中某个字符出现的次数   遇到的问题: 用grep -c “xxx字符”得到的是行数,如果一行中有多个匹配到的字符,只会算作一个       解决方法: 使用grep - ...

  10. hibernate经常报的几个不起眼的错误, 都是因为不细心或者手滑了输入有误造成了

    最近会经常用到hibernate了, 也经常报错, 看着屏幕上一根大红条是非常不爽的, 这几天集合了一下经常报的错误, 整合一下放到这里, 以后再出现这个错误直接去解决就好了 1, org.hiber ...