boost中的asio是一个非常好用的网络库
不过可以参考的资料比较少
大部分都是靠阅读自带的几个example来理解
这里记录一下这两天的几个心得
boost::asio::async_read_until(socket_, response_, “\r\n\r\n”, boost::bind(&shoutcast::handle_read_headers, this, boost::asio::placeholders::error));
async_read_until, 一直读,直到读到指定的内容.但是了,并不是刚刚读到就停止,一般缓冲区里会有更多的内容,
所以我们需要读出我们需要的,剩下的留下就好
官方是这么说的”After a successful async_read_until operation, the streambuf may contain additional data beyond the delimiter. An application will typically leave that data in the streambuf for a subsequent async_read_until operation to examine.”
boost::asio::async_read(socket_, response_, boost::asio::transfer_at_least(512), boost::bind(&shoutcast::handle_read_content, this, boost::asio::placeholders::error));
async_read 可以选择使用transfer_at_least 这个CompletionCondition
async_read 读入的缓冲区可以这样
boost::array
boost::asio::buffer(buffer_);来构造
也可以直接用字符数组来构造
char _buf[512] = {0};
boost::asio::buffer(_buf, 512);
也可以用流,更像tcp的方式
使用boost::asio::streambuf response_;
它继承自 std::streambuf
一般这样使用
std::istream _stream(&response_);
这里要注意的是 basic_istream::get
如果我们指定get的个数count,那么取出的个数是count-1
msdn是这样说的”The fourth function extracts up to _Count – 1 elements and stores them in the array beginning at _Str.”
这又是一个奇迹的夜晚
临近比赛结束的时候年轻的小将扳平比分
让人忘掉了前面整场的沉闷
为什么每次都要玩的这么悬
想起了06年看巴萨的欧冠决赛
这是搬家后第一次在电视上看比赛
很爽
因为不能说的秘密
btchina等下载网站全部over了
真是个bt的china
本来想买个带bt下载的播放器
可以在白天下载一些电影的
否则真对不起这么贵的网费
结果还没买 这些可爱的站点就没了
种种的限制越来越多
现在已经不允许个人注册域名
这是个朝令夕改的政府
在06年我还问过yasker
干嘛去注册一个org的域名
他说:安全
是的 真有远见
未雨绸缪 我还去godaddy注册了一个域名
fangfangtu.com
你们知道是什么意思 好记
通过paypal里的一点点余额付的款
很有意思 今天看到新闻
godaddy刚刚支持支付宝支付
在这个敏感的时候
支付宝挺身而出
真是”路见不平一声吼,该出手时就出手”
以后 就用这个域名了
this is it! fangfangtu.com
咳 虽然比较土 就这么着吧
等有了更好的想法再说吧