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

问题描述 投票:0回答:1
/*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字节的中间写入客户端。整个程序崩溃。

更多技术措辞:如何在转移中间处理半开插座?

c++ c++11 boost boost-asio
1个回答
0
投票

一定要做所有操作要么捕捉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)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.