Birçok insanın sahip olduğu bir sorun gibi görünüyor, ancak şimdiye kadar bulduğum tüm yanıtlar işe yaramadı.Destek kitaplığı ile bir udp yayını dinleme
Sorun: benim pc UDP yoluyla kendi paketlerini gönderen bir VELODYNE HDL32 dinlemeye çalışıyorum . İşletim sistemi, 32 bit Ubuntu ve Boost kütüphanesi v1.46'dır.
i Wireshark aracılığıyla olsun veri şuna benzer:
Time | Source | Destination | Protocol | Length | Source Port | Destination Port
0.000000 | 192.168.17.212 | 192.168.3.255 | UDP | 1248 | https | opentable
Ama bu kod ile hiçbir veri bana gösterilen
(Liman doğrudur):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));
}
herkes bir sorunu tanımlamak Can şu ana kadar veya daha fazla bilgiye mi ihtiyacınız var? Alabileceğim herhangi bir yardımı takdir ediyorum.
NOT: Programı root yetkisiyle çalıştırmıyorum!
Bazı düşünceler: mümkün olabilir o boost :: asio :: ip :: address_v4 :: herhangi() IP dinlemeyeceğim. 255.255.255.0 alt ağ maskesine sahipken. Netcat kullanıldığında, hiçbir veri gösterilmemiştir. Windows netcat kullandığımda oldukça iyi çalışıyor. Linux ve Windows'taki Wireshark ile aynı - iyi çalışıyor. Aynı zamanda, aynı etkiyle - veri yok.
Uygulama size çok noktaya yayın verileri gönderiyor mu? Eğer öyleyse, dinleme uç noktasına bağlanmadan deneyin. – Chad
io_service :: run()? Adlı kullanıcıyı aradınız mı? Sadece kodunuzun bir parçasını gösterdin, böylece sormam gerek. Ana işlevde – Sean
@Sean io_service.run() çağrılır. Program belirli bir IP ve belirli bir bağlantı noktasında veri alırken iyi çalışıyor. Ancak yayın dinlemeye çalıştığımda hiçbir veri alınmadı –