Boost ASIO:服务器如何知道客户端是否仍然连接?

2024-04-10

我在用boost::asio对于服务器/客户端应用程序。服务器一次只接受一个连接。我想知道服务器验证客户端是否仍然连接的最佳方法是什么。

这样做的目的是我希望能够知道客户端是否崩溃,以便我可以重新开始侦听新的连接尝试。


在我的应用程序中,我使用以下标志,当客户端断开连接时,我的读数就会显示出来。 如果您的应用程序中有此功能,请尝试一下。连接后立即应用此标志。

就我而言skt_TCP属于类型boost::asio::ip::tcp::socket

int32_t accept_server_socket = skt_TCP.native_handle();

int32_t timeout = 8;
int32_t cnt = 2;
int32_t intverval = 2;

// Added Keepalive flag
boost::asio::socket_base::keep_alive opt_keep_alive(true);
skt_TCP.set_option(opt_keep_alive);
setsockopt(accept_server_socket, SOL_TCP, TCP_KEEPIDLE, &timeout, sizeof(timeout));
setsockopt(accept_server_socket, SOL_TCP, TCP_KEEPCNT, &cnt, sizeof(cnt));
setsockopt(accept_server_socket, SOL_TCP, TCP_KEEPINTVL, &intverval, sizeof(intverval));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost ASIO:服务器如何知道客户端是否仍然连接? 的相关文章

随机推荐