服务器:

#include "stdafx.h"
#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>using namespace std;
using namespace boost::asio::ip;#define BUFFER_SIZE (16 * 1024)class UDPServer {
public:UDPServer(boost::asio::io_service &ios, int port);void doReceive(const boost::system::error_code& error, size_t bytesRecvd);static udp::socket* getUDPServersocket();inline void listen() {memset(bufferedData, 0, BUFFER_SIZE);socket.async_receive_from(boost::asio::buffer(bufferedData, BUFFER_SIZE), clientPoint,boost::bind(&UDPServer::doReceive, this, boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));std::cout << "listening ...."<<std::endl;}private:int sport;udp::socket socket;static udp::socket* psocket;udp::endpoint clientPoint;char bufferedData[BUFFER_SIZE];
};udp::socket* UDPServer::psocket = NULL;
UDPServer::UDPServer(boost::asio::io_service &ios, int port) :
socket(ios, udp::endpoint(udp::v4(), port)) {psocket = &socket;listen();
}void UDPServer::doReceive(const boost::system::error_code& error, size_t bytesRecvd) {cout << "received from<" << clientPoint.address().to_string() << ":" << clientPoint.port() << ">" << endl;cout << endl;listen();
}udp::socket* UDPServer::getUDPServersocket() {return psocket;
}int main()
{boost::asio::io_service ios;UDPServer tUDPServer(ios,10038);ios.run();return 0;
}

【Boost】boost库asio详解9——UDP的简单例子1相关推荐

  1. 【Boost】boost库asio详解9——TCP的简单例子2

    客户端: // Client.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include <iostream> #inclu ...

  2. 【Boost】boost库asio详解8——TCP的简单例子1

    摘于boost官网的几个例子, 做了点小修改, 笔记之. 同步客户端 [cpp] view plain copy  print? void test_asio_synclient() { typede ...

  3. 【Boost】boost库asio详解7——boost::asio::buffer用法

    1. asio::buffer常用的构造方法 asio::buffer有多种的构造方法,而且buffer大小是自动管理的 1.1 字符数组 [cpp] view plain copy  print? ...

  4. 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题

    io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁. [cpp] view plaincopy print? void tes ...

  5. 【Boost】boost库asio详解6——boost::asio::error的用法浅析

    1. 概述 一般而言我们创建用于接收error的类型大多声明如下: [cpp] view plain copy  print? boost::system::error_code error 我们用这 ...

  6. 【Boost】boost库asio详解5——resolver与endpoint使用说明

    tcp::resolver一般和tcp::resolver::query结合用,通过query这个词顾名思义就知道它是用来查询socket的相应信息,一般而言我们关心socket的东东有address ...

  7. 【Boost】boost库asio详解4——deadline_timer使用说明

    deadline_timer和socket一样,都用io_service作为构造函数的参数.也即,在其上进行异步操作,都将导致和io_service所包含的iocp相关联.这同样意味着在析构 io_s ...

  8. 【Boost】boost库asio详解3——io_service作为work pool

    无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE. 使用io_service作为处理工作的work pool,可 ...

  9. 【Boost】boost库asio详解2——strand与io_service区别

    [cpp] view plain copy  print? namespace { // strand提供串行执行, 能够保证线程安全, 同时被post或dispatch的方法, 不会被并发的执行. ...

最新文章

  1. Unity 3D为策略游戏创建地图学习教程
  2. 微信视频号聊天室技术介绍
  3. 为IT基础设施提供云端储存,云数据存储公司Nasuni获3800万美元股权融资
  4. hdu 3065 病毒侵袭持续中(AC自动机)
  5. 如何基于K8s构建下一代DevOps平台?
  6. 9.Tornado下的一个简易Blog--2013-05-21
  7. 森汉姆算法(AS3)-检测两点之间所经过的节点
  8. python3 for计数_python怎么实现计数?
  9. 前端学习(3048):vue+element今日头条管理-展示文章列表
  10. 数据结构(二)之算法基础
  11. fedora 忘记root密码
  12. day15 java接口在开发中的作用
  13. java swing 选项卡_java – 如何通过单击按钮在jTabbedPane中切换选项卡?
  14. 涨姿势,简单易懂带你玩转二叉树(图码并茂)
  15. 用友U8清除站点异常任务SQL语句
  16. AMP (LAMP/WAMP)
  17. 公众号内打开提示404_微信公众号文章内如何插入视频?
  18. 百分字符知识付费教程
  19. JS调用OCX控件过程
  20. 最全的人力资源行业精美报表模板,免费下载啦

热门文章

  1. BufferedWriter_字符缓冲输出流
  2. ES6新特性之解构表达式
  3. redis常见应用场景
  4. spring的aop整理
  5. xpath contains_Python神技能 | 六张表,搞定 Xpath 语法!
  6. java dwr实现消息推送_dwr消息推送
  7. 理解单例模式、单例类
  8. 设计模式之工厂模式(四)
  9. 七个你没用过的炫酷开发工具推荐
  10. 并发编程之多进程3 (生产者与消费者模型) 回调函数