博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASIO学习二:socket
阅读量:6463 次
发布时间:2019-06-23

本文共 2685 字,大约阅读时间需要 8 分钟。

//boost :boost_1_51//		1_44没有boost::asio::connect函数..与官网的向导不符...//		(其实不是不符..代码与文档要匹配,看清稳定版还是最新版)//		可以用socket.connect...////CONTENT//Introduction to Sockets//内容引用URL :http://think-async.com/Asio/boost_asio_1_5_3/doc/html/boost_asio/tutorial.html//first class :daytime protocol TCP//synchronous TCP Daytime client//date: 2012-12-24#include "iostream"#include "boost/array.hpp"#include "boost/asio.hpp"using boost::asio::ip::tcp;void daytime_client(){		try{		//所有使用ASIO的程序最少有一个io_service对象		boost::asio::io_service io_service;		//将服务器名字转换为TCP endpoint		tcp::resolver resolver(io_service);		std::string host ="192.168.3.144" ;//specify the host		//resolver需要一个query对象,并将query转换为a list of endpoints		//host name,也就是IP地址		//the name of service,也就是端口...		tcp::resolver::query query(tcp::v4(),host,"13");		//	tcp::resolver::query query(tcp::v4(),argv[1], "13");		//ip::tcp::resolver::iterator来保存list of endpoints		tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);			//创建socket		tcp::socket socket(io_service);		//list of endpoints 可能包含IPV4 /IPV6 endpoint,		//需要一个个测试找到可以用的,可以使程序兼容IP的版本		//这些工作由boost::asio::connect自动完成。		//连接socket		//如果是boost1_44:error C2039: 'connect' : is not a member of 'boost::asio'		boost::asio::connect(socket, endpoint_iterator);		//read the response from the daytime service		for(;;)		{			boost::array
buf; boost::system::error_code error; //boost::asio::buffer确定缓冲大小并防止越界. size_t len = socket.read_some(boost::asio::buffer(buf),error); //当Server关闭连接的时候,read_some返回boost::asio::error::eof if(error == boost::asio::error::eof) break; else if(error) throw boost::system::system_error(error); std::cout.write(buf.data(),len); } } catch(std::exception &e) { std::cerr <
<
#include
#include
#include
using boost::asio::ip::tcp;std::string make_daytime_string(){ using namespace std; //for time_t ,time ,ctime time_t now = time(0); return ctime(&now);}void daytime_server(){ try{ boost::asio::io_service io_service; //创建一个ip::tcp::acceptor用来监听连接. //初始化为监听TCP port 13, IPV4 tcp::acceptor acceptor(io_service,tcp::endpoint(tcp::v4(),13)); //情况2:创建一个连接,循环发送数据... tcp::socket socket(io_service); acceptor.accept(socket); for(;;) { //情况1:创建一个代表连接的socket,等待连接...只发送一次数据后析构.. //tcp::socket socket(io_service); //acceptor.accept(socket); //传送当前时间... std::string message = make_daytime_string(); boost::system::error_code ignored_error; boost::asio::write(socket,boost::asio::buffer(message),ignored_error); } } catch(std::exception &e) { std::cerr<
<

 

转载于:https://www.cnblogs.com/ezhong/archive/2013/01/15/2861019.html

你可能感兴趣的文章
第一篇markdown博文
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
ERDAS软件应用(四)遥感影像数据增强
查看>>
修改OBS为仅直播音频
查看>>
完整版:《开源框架实战宝典电子书V1.0.0》内测版下载地址!
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
CKEditor的使用-编辑文本
查看>>
HDU------checksum
查看>>
使用树莓派拍摄延时动画,制作GIF图
查看>>
css命名规范
查看>>
js 效果
查看>>
19.Java5同步集合类的应用
查看>>
<c:forEach varStatus="status">中 varStatus的作用
查看>>
Aqua Data Studio 数据库开发工具
查看>>
puppet来管理文件和软件包
查看>>
Python基础进阶之路(一)之运算符和输入输出
查看>>
阻塞非阻塞异步同步 io的关系
查看>>
ClickStat业务
查看>>
DMA32映射问题
查看>>
Android内存泄露之开篇
查看>>