के साथ एक udp प्रसारण को सुनना कई लोगों के पास एक समस्या है, लेकिन अब तक के सभी उत्तरों को मैंने मदद नहीं की है।बूस्ट लाइब्रेरी
समस्या: मैं एक Velodyne HDL32 कि मेरे पीसी के लिए यूडीपी के माध्यम से अपने पैकेट भेजता है को सुनने के लिए कोशिश कर रहा हूँ। ओएस 32-बिट उबंटू और बूस्ट लाइब्रेरी 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));
}
किसी को भी एक समस्या की पहचान कर सकते हैं अब तक या आपको अधिक जानकारी चाहिए? मैं जो भी सहायता प्राप्त कर सकता हूं उसकी सराहना करता हूं।
नोट: मैं रूट विशेषाधिकारों के साथ प्रोग्राम नहीं चला रहा हूं!
कुछ विचार: यह संभव हो सकता है कि बढ़ावा :: asio :: आईपी :: address_v4 :: किसी भी() आईपी नहीं सुनेगा।। * 255 जब सबनेटमास्क 255.255.255.0 है?
नेटकैट का उपयोग करते समय, कोई डेटा भी दिखाया नहीं जाता है। जब मैं विंडोज नेटकैट का उपयोग करता हूं तो यह काफी ठीक काम करता है। लिनक्स और विंडोज़ पर वायरशर्क के साथ ही - ठीक काम करता है। ने इसे साथ भी कोशिश की, लेकिन उसी प्रभाव के साथ - कोई डेटा नहीं।
आप के लिए मल्टीकास्ट डेटा भेजने आवेदन है? यदि ऐसा है, तो सुनो एंडपॉइंट को बाध्य किए बिना प्रयास करें। – Chad
क्या आपने io_service :: run() को कॉल किया था? आपने केवल अपने कोड का एक टुकड़ा दिखाया है इसलिए मुझे पूछना है। – Sean
@Sean io_service.run() मुख्य समारोह में कहा जाता है। एक विशिष्ट आईपी और एक विशिष्ट बंदरगाह पर डेटा प्राप्त करते समय कार्यक्रम ठीक काम कर रहा है। लेकिन कोई डेटा प्राप्त होता है जब मैं प्रसारित करने के लिए –