Boost asio的endpoint.address.to_string弹框报错
最近遇到一个用户,启动软件就弹框报错,完全无法使用,然后一步一步调试跟踪,终于发现问题,讲出错代码定位在以下这行:
string remote_address = http_server_socket_->GetEndPoint().address().to_string();
经过仔细的研究,发现其实是to_string方法报错了,其实也很奇怪,全网那么多用户,偏偏就这个用户会报错,但是这又是很重要的代码,只能那么写。于是研究了一下to_string()方法,发现boost的to_sting()方法还有另外一个带error_code的版本。于是,试用了一下error_code的版本,果然不会报错。解决的代码如下:
boost::system::error_code ec; string remote_address = http_server_socket_->GetEndPoint().address().to_string(ec); if (!ec) { // 成功,do something }
因此,为了增强系统的健壮性,使用boost库的时候,尽量使用带error_code版本的函数。
近期评论