Boost ip::tcp::socket.close()的可能错误有哪些?

Boost ip::tcp::socket.close()的可能错误有哪些?,boost,boost-asio,Boost,Boost Asio,根据文件: 请注意,即使函数指示错误,底层 描述符已关闭 可能的错误是什么 此外,如果在socket.close()中发生错误,那么无论在socket.close()中出现任何错误,socket.is\u open()的结果是否总是false?我还没有检查文档,但是如果socket有明确关闭通信的协议(想想SSL),这是有意义的 如果关闭序列无法完成(因为端点已关闭/无法访问?),则这是一个错误,但套接字仍处于关闭状态(因此此端不会因为无法控制的外部因素而遭受资源泄漏) 注意 评论 要了解有关正

根据文件:

请注意,即使函数指示错误,底层 描述符已关闭

可能的错误是什么


此外,如果在
socket.close()
中发生错误,那么无论在
socket.close()
中出现任何错误,
socket.is\u open()
的结果是否总是
false

我还没有检查文档,但是如果socket有明确关闭通信的协议(想想SSL),这是有意义的

如果关闭序列无法完成(因为端点已关闭/无法访问?),则这是一个错误,但套接字仍处于关闭状态(因此此端不会因为无法控制的外部因素而遭受资源泄漏)

注意

评论

要了解有关正常关闭已连接套接字的可移植行为,请在关闭套接字之前调用
shutdown()


通常,当Boost.Asio取决于操作系统实现时,它既不会指定可能发生错误的条件,也不会指定可能返回的错误代码

如果错误处理取决于确切的错误代码,则可以使用或来确定正在进行哪些操作系统调用。 在的情况下,实现将使用或。您可以使用适当的操作系统文档来确定错误情况,以及与位于中的Boost.Asio错误代码相关联的错误返回值

basic\u socket::close()
文档中所述,无论发生什么错误,底层描述符都将被关闭。此外,类型要求要求
close()
的post条件是
是打开的()
返回false

服务关闭(impl,ec)→ <代码>!服务是否打开(impl)

此外,虽然Boost.Asio文档是查找指定行为的最合适的地方,但基于Asio的日期为(2007-03-11)的文档偶尔会包含一些有助于理解细节的措辞:

error\u code close(实现类型&impl、error\u code&ec)

。。。通过POSIX
close()