似乎是很多人都有的问题,但到目前为止我找到的所有答案都没有帮助。
问题: 我正在尝试收听通过 UDP 将数据包发送到我的电脑的 Velodyne HDL32。操作系统是 32 位 Ubuntu 和 Boost 库 v1.46。
我通过 Wireshark 获得的数据如下所示:
Time | Source | Destination | Protocol | Length | Source Port | Destination Port
0.000000 | 192.168.17.212 | 192.168.3.255 | UDP | 1248 | https | opentable
但是使用此代码,没有数据显示给我(端口是正确的):
receiver(boost::asio::io_service& io_service,
const boost::asio::ip::address& listen_address)
: m_socket(io_service)
{
boost::asio::ip::address ipAddr = boost::asio::ip::address_v4::any();
boost::asio::ip::udp::endpoint listen_endpoint(
ipAddr, 2368);
m_socket.open(listen_endpoint.protocol());
m_socket.bind(listen_endpoint);
m_socket.async_receive_from(
boost::asio::buffer(m_data, max_length), m_sender_endpoint,
boost::bind(&receiver::handle_receive_from, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
void handle_receive_from(const boost::system::error_code& error,
size_t bytes_recvd)
{
std::cout << "receive" << bytes_recvd << std::endl;
m_socket.async_receive_from(
boost::asio::buffer(m_data, max_length), m_sender_endpoint,
boost::bind(&receiver::handle_receive_from, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
到目前为止,任何人都可以确定问题还是您需要更多信息?我很感激我能得到的任何帮助。
注意: 我没有以 root 权限运行程序!
一些想法: boost::asio::ip::address_v4::any() 是否有可能不会监听 IP 。.*.255 当子网掩码为 255.255.255.0 时?
使用 netcat 时,也不会显示任何数据。当我使用 Windows netcat 时,它工作得很好。与 Linux 和 Windows 上的 Wireshark 相同 - 工作正常。也尝试过,但效果相同 - 没有数据。