【问题标题】:boost 1.47 compile error with non_blocking()使用 non_blocking() 提升 1.47 编译错误
【发布时间】:2011-07-15 16:20:05
【问题描述】:

谁能看出我在这里做错了什么?根据 1.47 中的文档,basic_datagram_socket 继承自 basic_socket,因此应该继承 non_blocking() 或 non_blocking(bool)。 谢谢

错误 1 ​​错误 C2039: 'non_blocking' : is not a member of 'boost::asio::basic_datagram_socket' c:\DEV\projects\topoTest\topoTest\multiReceiver.cpp 129

这是电话。 socket_.non_blocking(true);

并且套接字在一个类中定义如下:

boost::asio::ip::udp::socket socket_;

【问题讨论】:

  • 请发布您用来重现此问题的全部代码,您发布的有限代码没有明显错误。

标签: c++ windows boost boost-asio


【解决方案1】:

成员函数boost::asio::ip::udp::socket::non_blocking() 似乎是 1.47 中的新功能。要么它在 1.47 中实际上不存在,要么您实际上使用的是较旧的标头。我建议找到包含的 <boost/asio/basic_datagram_socket.hpp> 标头,以查看它是否实际上具有该成员函数作为 basic_datagram_socket 类的一部分。如果没有,你总是可以像史蒂夫汤森在他的回答中所说的那样用老方法来做。

我刚下载了Boost 1.47,发现basic_datagram_socket继承自basic_socketnon_blocking()。在我看来,您实际上并没有 Boost 1.47。

【讨论】:

  • 肖恩,感谢您的回答为我指明了正确的方向。我确实有 1.47,但不知何故我没有删除对 1.46 的引用,它在包含路径中的 1.47 引用之前。所以这个的全部原因是1.47我认为我现在可以从async_receive_from中立即返回,如果没有什么可以读取的woul_block错误,但到目前为止,async_receive_from阻塞直到有一个数据报返回,即使non_blocking设置为真的。所以我在这一点上有点难过。将进一步分析。
  • @Al async_receive_from 总是立即返回,您可能会遇到其他行为。我建议提出一个新问题。
猜你喜欢
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多