// BoostServer.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <boost/asio.hpp> using namespace boost::asio;
#define BLOCK_SIZE 64*1024 int main(int argc, char* argv[])
{
// 所有asio类都需要io_service对象
io_service iosev;
ip::tcp::acceptor acceptor(iosev,
ip::tcp::endpoint(ip::tcp::v4(), 1000));
for(;;)
{
// socket对象
ip::tcp::socket socket(iosev);
// 等待直到客户端连接进来
acceptor.accept(socket);
// 显示连接进来的客户端
std::cout << "client from: "
<< socket.remote_endpoint().address() << std::endl; boost::system::error_code ec; // 从客户端读取数据
char buf[BLOCK_SIZE];
int len = socket.read_some(buffer(buf), ec);
// 或者可以使用read_until读到某个字符为止
// 或者可以使用某种判断方式循环读取 if (ec)
{
std::cout <<
boost::system::system_error(ec).what() << std::endl;
break;
}
std::cout.write(buf, len);
std::cout << len << std::endl; Sleep(1000); // 向客户端发送
len = socket.write_some(buffer(buf, len), ec);
if(ec)
{
std::cout <<
boost::system::system_error(ec).what() << std::endl;
break;
}
std::cout << "writed " << len << std::endl;
// 与当前客户交互完成后循环继续等待下一客户连接
} return 0; }

  异步读可以使用async_read_some或者async_read等

最新文章

  1. struts2+spring的两种整合方式
  2. Windows Server 2012 虚拟化实战:域
  3. CSS3系列之3D制作
  4. UIButton的titleEdgeInsets和imageEdgeInsets属性
  5. navicat premium 导出表结构
  6. TortoiseSVN期望文件系统格式在“1”到“6”之间;发现格式“7”
  7. roscpp源码阅读
  8. Windows下使用Visual Studio 2010编译ffmpeg全过程
  9. PowerDesigner使用详解
  10. loadrunner简单的例子(demo)
  11. Qt中添加背景图片的方法
  12. C51单片机模拟I2C总线驱动程序设计
  13. Objective-C时间戳转换的转换和时间
  14. spoj 1557 GSS3 - Can you answer these queries III 线段树
  15. 使用jquery 1.7 及以后的版本 attr 问题
  16. Eclipse扩展点实践之添加快捷菜单项(Command方式实现)
  17. MySQL数据库规约.
  18. Flutter 即学即用系列博客——04 Flutter UI 初窥
  19. lua生成UUID
  20. Forth相关IO操作

热门文章

  1. 李宏毅 Keras2.0演示
  2. @Transactional事务总结
  3. SpringCloud学习(二)服务消费者(rest+ribbon)(Finchley版本)
  4. linux下nginx的学习
  5. 菜鸟系列k8s——快速部署k8s集群
  6. [bzoj4026]dC Loves Number Theory_主席树_质因数分解_欧拉函数
  7. 15.sqoop数据从mysql里面导入到HDFS里面
  8. [转帖]mysql8.0忘记密码如何操作?
  9. 自定义函数(function)
  10. kubernetes dashboard访问用户添加权限控制