【发布时间】:2017-04-27 18:11:01
【问题描述】:
这是一个简单的问题,但我似乎无法弄清楚我做错了什么。我正在尝试使用 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 在本地计算机上查看此端口上的流量。那么,我在这里做错了什么?
【问题讨论】:
-
数据不显示在应用层的原因可能有。什么操作系统?
-
操作系统是 Ubuntu 16.04。
-
所以,尝试通过
nc -luv 10114使用netcat 收听,我得到了我期望的数据。