如何在转移中间处理半开插座?

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 查询和片段?

如何在代码中使用 UItable 单元中的按钮插座

如何有条件地将 C 代码片段编译到我的 Perl 模块?

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段