【问题标题】:Should we close the client socket also?我们是否也应该关闭客户端套接字?
【发布时间】:2018-02-05 07:46:22
【问题描述】:

请参考 ASIO 示例:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/examples/cpp03_examples.html

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

该类有一个 stop() 函数,该函数在已创建的套接字上调用 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

这个类也在客户端创建了一个socket,但是这段代码并没有关闭socket。

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

问题:

1) 只是关闭服务器已经打开的套接字就足够了,还是我们也应该在客户端代码中的套接字上调用 close ?

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

【问题讨论】:

    标签: boost boost-asio


    【解决方案1】:
    1. 您必须关闭所有可关闭的内容。
    2. 在关闭之前关闭是多余的,除非您派生了一个进程并继承了套接字。

    【讨论】:

    • 谢谢.. 还有一个问题.. 有没有办法取消同步 boost::asio::read 操作,该操作阻塞表示客户端必须关闭。
    • @NishantSharma 关闭套接字输入。这会将流的结尾传递到套接字,因此自然会顺其自然,您将关闭套接字,
    • 我不得不嘲笑“自然应该顺其自然”。人类中心主义、自然主义:人类思维的必然拐杖。 +1
    • @sehe 我当然不认为他们是“不可避免的”。其实这就是笑话的重点。
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多