asio的使用
1、下载
性能测试:https://github.com/huyuguang/asio_benchmark
2、基本使用
2.1 TCP
1、客户端:
2、服务端:
2.2 UDP单揪
boost的asio接收单路大数据量udp包的方法
1、发送:
2、接收:
#include "CircledBuffer.h"
#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
using boost::asio::ip::udp;
boost::asio::io_service service;
boost::asio::ip::udp::socket sock(service);
boost::asio::ip::udp::endpoint sender_ep;
CircledBuffer readBuffer;
PacketBuffer* packet;
int main(int argc, char* argv[]) {
boost::asio::ip::udp::endpoint ep( boost::asio::ip::address::from_string("192.168.1.206"),
9002);
sock.open(ep.protocol());
sock.set_option(boost::asio::ip::udp::socket::reuse_address(true));
boost::asio::socket_base::receive_buffer_size recv_option(8*65534);
sock.set_option(recv_option);
sock.bind(ep);
packet = readBuffer.GetLast();
sock.async_receive_from(boost::asio::buffer(packet->data, packet->bufferSize), sender_ep, &on_read);
service.run();
}
void on_read(const boost::system::error_code & err, std::size_t read_bytes)
{
std::cout << "read: " << read_bytes << std::endl;
readBuffer.MoveNext();
packet= readBuffer.GetLast();
sock.async_receive_from(boost::asio::buffer(packet->data, packet->bufferSize), sender_ep, &on_read);
}
2.3 udp组播
1、发送:
2、接收: