如何在转移中间处理半开插座?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在转移中间处理半开插座?相关的知识,希望对你有一定的参考价值。
/*Basic Things has been done.*/
/*Like setting connection and receiving */
namespace bar = boost::asio::error;
void doWrite(char* buffer, size_t size_) {
boost::asio::async_write_some(socket, boost::asio::buffer(buffer ,size), boost::bind(&Handler, this, bar::error, bar::bytes_transferred));
}
/*handler*/
void handler(/*parameters*/)
{
}
而我的服务器不断传输数据。有时客户端会故意崩溃/ * *。 errorCode.message()
给出了boost::asio::error::bad_descriptor
和整个程序崩溃的错误。我已经从boost聊天服务器示例中复制了该程序。
如果服务器正在传输,则说1024字节,而在写入1024字节的中间写入客户端。整个程序崩溃。
更多技术措辞:如何在转移中间处理半开插座?
答案
一定要做所有操作要么捕捉system_error
或接收(和检查)error_code
。
正如你所说,你已经收到了boost::asio::error::bad_descriptor
代码,所以我希望程序终止结果是因为在抛出的同一个套接字上的后续操作。
寻找带有boost::system::error_code&
参数的重载(例如http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/basic_stream_socket/close.html)。
以上是关于如何在转移中间处理半开插座?的主要内容,如果未能解决你的问题,请参考以下文章
你如何在 python 中处理 graphql 查询和片段?
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段