के साथ प्राप्त कैसे विभाजित करें मैंने अपने यूडीपी सर्वर और क्लाइंट को boost :: asio udp सॉकेट के साथ बनाया है। इससे पहले कि मैंने अधिक डेटाग्राम भेजना शुरू किया, सब कुछ अच्छा लग रहा था। वे क्लाइंट से सर्वर पर सही ढंग से आते हैं। लेकिन, वे मेरे बफर में एक संदेश में एकजुट हैं।बूस्ट एएसआईयू udp सॉकेट संयुक्त डेटाग्राम
मैं
udp::socket::async_receive
का उपयोग std::array<char, 1 <<18>
बफर
साथ async अनुरोध करने के लिए। और कॉलबैक
void on_receive(const error_code& code, size_t bytes_transferred)
के माध्यम से डाटा प्राप्त होता है मैं भी अक्सर (हर 10 मिलीसेकंड) डेटा भेजने मैं कई डाटाग्राम ऊपर कॉलबैक के साथ अपने बफर में एक साथ प्राप्त करते हैं। सवाल यह है कि कैसे अलग उन्हें अलग करें? नोट: मेरे यूडीपी डेटाग्राम में परिवर्तनीय लंबाई है। मैं आकार के साथ अतिरिक्त हेडर का उपयोग नहीं करना चाहता, क्योंकि यह तीसरे पक्ष के डेटाग्राम के लिए मेरा कोड बेकार कर देगा।
क्या आप अपना कोड दिखा सकते हैं? –
अपने 'on_receive' संदेश में उपयोगकर्ता द्वारा प्रदत्त कॉलबैक फ़ंक्शन का उपयोग करें, जो एकल प्राप्त पैकेट में सभी शामिल संदेशों को संसाधित करता है। – Chad
निश्चित रूप से, यह यहां पाया जा सकता है: [udp2tcp_tunnel] (https://github.com/valery-l/udp2tcp_tunnel)। यह प्रगति पर है - अभी तक एक छोटा पिंग-पोंग सर्वर (क्लाइंट से टीसीपी द्वारा भेजना, यूडीपी द्वारा सर्वर से एक ही परीक्षण संदेश प्राप्त करना)। ऐसा लगता है कि मुझे समस्या मिली। यदि मैं ** बफर अनुक्रम ** में कई बफर भेजता हूं, तो 'basic_datagram_socket :: async_send_to (buffer_sequence, हैंडलर)' द्वारा, यह ** एक ** डेटाग्राम (** ** ** ** ** प्रत्येक बफर के लिए डेटाग्राम नहीं होगा * *)। –