加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在boost :: asio :: ip :: tcp :: socket上设置非阻塞时出

发布时间:2020-12-16 09:32:53 所属栏目:百科 来源:网络整理
导读:我是新手,我一直在尝试使用boost :: asio.问题是我在设置一些选项时总是会遇到“错误文件描述符”错误/异常(我需要将其设置为非阻塞).即便这样也失败了: #include boost/asio.hppusing boost::asio::ip::tcp;int main( ){ boost::asio::io_service io_servi
我是新手,我一直在尝试使用boost :: asio.问题是我在设置一些选项时总是会遇到“错误文件描述符”错误/异常(我需要将其设置为非阻塞).即便这样也失败了:

#include <boost/asio.hpp>

using boost::asio::ip::tcp;

int main( )
{
  boost::asio::io_service io_service;

  tcp::socket socket( io_service );
  boost::asio::socket_base::non_blocking_io option(true);

  socket.io_control( option );

  return 0;
}

在运行期间弹出:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what():  Bad file descriptor

当我尝试了一切时,这真的令人沮丧.如果重要,操作系统是Linux x64.

解决方法

您调用了套接字构造函数 does not open套接字.您可以在调用socket :: io_control()之前使用其他一个打开套接字的重载,或者显式打开套接字.

boost::asio::ip::tcp::socket socket(io_service);
socket.open(boost::asio::ip::tcp::v4());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读