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

服务器:

#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;
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值