我正在使用Boost :: asio来实现客户端/服务器应用程序.下面的客户端代码用于连接远程服务器.
try
{
boost::asio::io_service m_io_service;
boost::asio::ip::tcp::socket m_socket(m_io_service);
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 17);
m_socket.connect(endpoint);
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
在客户端,我想检查连接是否有效.功能" m_socket.is_open();"不起作用.当服务器套接字关闭时," m_socket.is_open();"仍然在客户端返回true.有没有办法检查连接?
检查套接字是否在连接的远程端关闭的最简单方法是什么?socket::is_open()即使它在远程端关闭(我正在使用boost::asio::ip::tcp::socket),它也会返回true .
我可以尝试从流中读取并查看它是否成功,但我必须更改程序的逻辑以使其以这种方式工作(我不希望在检查时从流中提取数据).