关于 Boost.Asio 关闭 socket 的方式

2016-06-12 19:20:46 +08:00
 linghutf
void handle_close(const boost::system::error_code& ec)
        {
            if(!ec){
                LOG4CPLUS_DEBUG(LOG,LOG4CPLUS_TEXT("close connection..."));
                
                socket_.shutdown(boost::asio::socket_base::shutdown_send);
                
                boost::asio::async_read(socket_,boost::asio::null_buffers(),
                        boost::bind(&Connection::handle_close,
                            shared_from_this(),
                            boost::asio::placeholders::error));

            }else if(ec == boost::asio::error::eof){
                socket_.shutdown(boost::asio::socket_base::shutdown_receive);
                socket_.close();
                LOG4CPLUS_DEBUG(LOG,LOG4CPLUS_TEXT("connection closed."));
            }else{
                LOG4CPLUS_ERROR(LOG,LOG4CPLUS_TEXT("error:"<<ec.message()));
            }
        }

 socket_.shutdown(boost::asio::socket_base::shutdown_both);
 socket_.close();
1539 次点击
所在节点    C
1 条回复
jeffersonpig
2016-06-13 09:29:49 +08:00
一看到 boost 这老长老长的嵌套 namespace 就莫名的火大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/285185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX