2009年7月30日星期四

D-Link DI-524M无线路由不好用

这个无线路由一点都不好用,设置不方便,无线信号不稳定.就我用过的tp-link的和
netgear的来说,d-link的是最差的.你们想买的人还是三思吧
--
caosuwei <caosuwei@gmail.com>

2009年7月29日星期三

asio::read && asio::write

这两个函数的参数中,read使用的是满足MutableBufferSequence的类型, 而write
使用的是满足ConstBufferSequence的类型
而boost::asio::buffer(const std::string &str)返回的是一个const_buffer_1
的类型,这个是个ConstBufferSequence, 也就是说,
std::string response;
count = boost::asio::read(connfd, boost::asio::buffer(response));
这样的语句是无法通过编译的.
变通的办法就是
std::vector<char> vec_response;
count = boost::asio::read(connfd, boost::asio::buffer(vec_response));
Asio中给出的例子也正是这样用的.
但是,为什么boost::asio::buffer(const std::string &str)要返回
const_buffer_1呢?
--
caosuwei <caosuwei@gmail.com>

2009年7月8日星期三

Debian上的ps命令

在Debian上用ps -aux会出一个警告:

Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html

以前一直没有注意这个警告,今天查了一下man,上面是这样解释的:

ps -aux 和 ps aux是不一样的,POSIX和UNIX标准上,ps -aux是打印出所有属于
username是"x"的用户的进程.如果这个用户不存在的话,作为一个兼容手段,再按照
ps aux执行,并且打印出一个警告信息出来.

$ ps --version
procps version 3.2.7

2009年7月7日星期二

boost::asio的处理模式

今天看了看boost::asio里面附带的几个示例程序.主要是chat那个.

大概了解了点asio的处理这类类似协议解析事件的方法.

解析协议的处理方法,一般做法就是写一个状态机.类似于lighttpd中处理连接的connection_state_machine(),定义了一系列的状态,处理完一段就切换到另一个状态,直至连接终止.

在asio中,对每个异步的调用,比如boost::asio::async_write(), boost::asio::async_read(),函数签名中都有一个handler参数,指定在异步调用完成之后的后续处理.

示例代码中就是在这个参数中指定下一步的处理函数,来完成状态的转换.