我正在使用 Boost ASIO 套接字与 linux 下的一些远程设备进行通信,但是当端点无法访问时我遇到了问题。首先,这是显示此问题的代码部分:
try {
if(mysocket == NULL)
{
mysocket = new boost::asio::ip::tcp::socket(io_service);
}
mysocket->connect(boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string("192.168.0.12"), 1));
printf("connected\n");
return 0;
}
catch (std::exception &e)
{
boost::system::error_code ec;
mysocket->close(ec);
delete mysocket;
mysocket = NULL;
printf("not connected %s\n", e.what());
}
通过在我的类中使用这段代码,我得到了越来越多的 eventfd 类型的文件描述符,直到所有可用的 fd 都被使用并且应用程序崩溃。上面的代码有问题吗?为什么 boost 不关闭文件描述符?我什至删除了套接字!提前致谢!