boost之asio库,socket相关

server端代码:

#include <iostream>

#include <boost/thread.hpp>
#include <boost/asio.hpp>

using namespace std;
using namespace boost;

void main()
{
	boost::asio::io_service io_service;
	boost::asio::ip::udp::socket sock_srv(io_service);

	boost::asio::ip::udp::endpoint point_srv(boost::asio::ip::address::from_string("127.0.0.1"), 6000);

	sock_srv.open(point_srv.protocol());
	sock_srv.bind(point_srv);

	while(1)
	{
		char buf[100] = {0};
		boost::asio::ip::udp::endpoint point_conn;

		sock_srv.receive_from(boost::asio::buffer(buf, 100), point_conn);
		cout<<"server recv: "<<buf<<endl;

		sock_srv.send_to(boost::asio::buffer(buf), point_conn);
	}

}


可改为:

#include <iostream>
using namespace std;

#include <boost/asio.hpp>

int main(int argc, char*argv[])
{
	boost::asio::io_service io_service;
// 	boost::asio::ip::udp::socket sock_srv(io_service);
// 
// 	boost::asio::ip::udp::endpoint point_srv(boost::asio::ip::address::from_string("127.0.0.1"), 6000);
// 
// 	sock_srv.open(point_srv.protocol());
// 	sock_srv.bind(point_srv);

	boost::asio::ip::udp::socket sock_srv(io_service, boost::asio::ip::udp::endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 6000));

	//recv
	char buf[100] = {0};
	boost::asio::ip::udp::endpoint point_conn;

	sock_srv.receive_from(boost::asio::buffer(buf, 100), point_conn);
	cout<<"server recv:"<<buf<<endl;

	//send
	sock_srv.send_to(boost::asio::buffer(buf), point_conn);

	return 0;
}


client端代码:

#include <iostream>

#include <boost/thread.hpp>
#include <boost/asio.hpp>

using namespace std;
using namespace boost;

void main()
{
	boost::asio::io_service io_service;
	boost::asio::ip::udp::socket sock_cli(io_service);

	boost::asio::ip::udp::endpoint point_srv(boost::asio::ip::address::from_string("127.0.0.1"), 6000);

	sock_cli.open(point_srv.protocol());

	while(1)
	{
		sock_cli.send_to(boost::asio::buffer("hello world"), point_srv);

		char buf[100] = {0};
		sock_cli.receive_from(boost::asio::buffer(buf, 100), point_srv);
		cout<<"client recv: "<<buf<<endl;
	}
}


新代码:

#include <iostream>
using namespace std;

#include <boost/asio.hpp>

int main(int argc, char*argv[])
{
	boost::asio::io_service io_service;
	boost::asio::ip::udp::socket sock_cli(io_service);

    sock_cli.open(boost::asio::ip::udp::v4());

	//send
	boost::asio::ip::udp::resolver rlv(io_service);
	boost::asio::ip::udp::resolver::query qry(boost::asio::ip::udp::v4(), "127.0.0.1", "6000");

	boost::asio::ip::udp::endpoint point_srv = *rlv.resolve(qry);

	sock_cli.send_to(boost::asio::buffer("hello world"), point_srv);

	//recv
	char buf[100] = {0};
	boost::asio::ip::udp::endpoint point_conn;
	sock_cli.receive_from(boost::asio::buffer(buf, 100), point_conn);
	cout<<"client recv:"<<buf<<endl;

	return 0;
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值