我们应该关闭客户端套接字吗?

时间:2018-02-05 07:46:23

标签: boost boost-asio

请参阅:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/examples/cpp03_examples.html

上的ASIO示例

连接类代码位于:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/http/server/connection.cpp

这个类有一个stop()函数,它调用已创建的套接字对应于对服务器的连接请求(来自void server :: start_accept())

客户端代码位于:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/http/client/sync_client.cpp

此类还在客户端创建套接字,但此代码不会关闭套接字。

因此,有2个套接字被打开:从客户端到服务器,反之亦然

问题:

1)只是关闭服务器已经打开的套接字,还是应该在客户端代码内的套接字上调用close?

2)我们应该在调用close之前调用socket上的shutdown吗?

1 个答案:

答案 0 :(得分:2)

  1. 你必须关闭所有可以关闭的东西。
  2. 关闭前关闭是多余的,除非你已经分叉了一个进程并继承了套接字。