使用boost :: asio进行简单的UDP通信

Using boost::asio for simple udp communication

本文关键字:UDP 简单 通信 boost asio 使用      更新时间:2023-10-16

这是一个简单的问题,但我似乎无法弄清楚我在做什么错。我正在尝试使用Boost读取发送到客户端端口的数据,并且我有以下代码设置1(UDP客户端,2(用于阅读的缓冲区和3(试图从套接字阅读:

// Set up the socket to read UDP packets on port 10114
boost::asio::io_service io_service;
udp::endpoint endpoint_(udp::v4(), 10114);
udp::socket socket(io_service, endpoint_);
// Data coming across will be 8 bytes per packet
boost::array<char, 8> recv_buf;
// Read data available from port
size_t len = socket.receive_from(
            boost::asio::buffer(recv_buf,8), endpoint_);
cout.write(recv_buf.data(), len);

问题是recieve_from功能永远不会返回。服务器正在另一台计算机上运行并连续生成数据。我可以使用Wireshark在本地计算机上看到此端口的流量。那么,我在这里做错了什么?

因此,事实证明,我需要在该端口上收听来自任何地方的连接。因此,端点需要设置为

boost::asio::ip::udp::endpoint endpoint_(boost::asio::ip::address::from_string("0.0.0.0"), 10114);

使用此设置,我会收回我期望的数据。FYI,0.0.0.0与INADDR_ANY