Boost asio TCP IP asio class compile error with Visual Studio.错误:C2228:'.close'左侧必须具有类/结构/联合
Boost asio TCP IP asio class compile error with Visual Studio. Error: C2228: left of '.close' must have class/struct/union
>我正在尝试按照此页面中提供的步骤进行操作
http://www.boost.org/doc/libs/1_46_0/doc/html/boost_asio/tutorial/tutdaytime1.html
但是,在某些时候代码无法编译,并给了我指定的错误。我不明白这是什么样的冲突。对象 tcpsock 似乎没有正确创建。请检查我的代码:
io_service io_tcp;
tcp::resolver resolverObject(io_tcp);
tcp::resolver::query queryObject(argv[1], "daytime");
tcp::resolver::iterator endpoint_iterator = resolverObject.resolve(queryObject);
tcp::resolver::iterator end; //default constructor is end iterator
tcp::socket tcpsock(io_service);
boost::system::error_code socketError = boost::asio::error::host_not_found;
while (socketError && endpoint_iterator != end)
{
//Apparently, the object isn't created correctly
tcpsock.close(); //error happenes here
tcpsock.connect(*endpoint_iterator++, socketError); //error happenes here too
}
if (socketError)
throw boost::system::system_error(socketError);
感谢您的任何努力。
您正在使用类型 io_service
而不是变量 io_tcp
初始化tcpsock
。
我也发现了这个编译错误,但从不同的角度给出以下内容:
boost::asio::read(socket, replyBuf, boost::asio::transfer_all(), error);
与正确的相比:
boost::asio::read(*socket, replyBuf, boost::asio::transfer_all(), error);
请注意需要取消引用套接字。似乎boost使用常见的基本类型可以防止通常的智能感知错误。
将来,我建议在运行时对 boost 类型的参数使用之前添加一个空检查。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 提升 ASIO 无法识别计时器对象
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 缓慢提升ASIO
- C++typeid模板值转换为联合不可接受的转换
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- C++ Boost::asio串行通信与Arduino无法写入
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 提升 ASIO - io_service 不要等待连接到线程
- 执行时使用 boost::asio::d eadline_timer 时出错
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- Boost asio TCP IP asio class compile error with Visual Studio.错误:C2228:'.close'左侧必须具有类/结构/联合