मैं क्यूटी विकास में Google के प्रोटोकॉल बफर में डुबकी डालना चाहता हूं, लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि उन्हें सर्वश्रेष्ठ कैसे शामिल किया जाए।क्यूटी + प्रोटोबफ, प्रकार?
आखिरकार, मैं QUdpSocket
और QTcpSocket
प्रोटोकॉल बफर का उपयोग करके भेजना चाहता हूं।
एक सॉकेट (QByteArray
) पर डेटा भेजने के लिए प्रोटोकॉल बफर message
के बीच जाने के लिए सबसे अच्छी विधि क्या है और फिर दूसरी ओर फिर से वापस? नीचे के रूप में आप ParseFromArray()
उपयोग कर सकते हैं, उदाहरण के लिए,: एक QByteArray
से
Person person; // a protobuf object
person.set_id(123);
person.set_name("Bob");
person.set_email("[email protected]");
std::ostringstream out;
person.SerializeToOstream(&out);
QByteArray byteArray(out.str().c_str());
sendSerializedPersonOverQTcpSocket(byteArray);
वापस पढ़ना एक Protobuf वस्तु:
प्रति गलत नहीं है, लेकिन आपको मैसेग की पहचान करने के लिए किसी तरह की आवश्यकता है दूसरी तरफ ई। इसके अलावा आपको डेटा की लंबाई की पहचान करने की आवश्यकता है। Protobuf आंतरिक रूप से उन चीजों में से कोई भी नहीं करता है। साथ ही, स्ट्रीम आउटपुट संस्करण स्वरूपकों का सबसे धीमा है - वेक्टर/सरणी आउटपुट तेज़ होते हैं। –
मैं 'SerializeToArray' विधि का उपयोग करने का प्रयास कर रहा हूं, लेकिन यह समझ नहीं सकता कि 'QByteArray' में रूपांतरण कैसे करें। क्या आप इसका उदाहरण दे सकते हैं? – Jay
कृपया स्वरूपित कोड के लिए नीचे देखें - मुझे नहीं पता कि टिप्पणियों में कोड को कैसे प्रारूपित किया जाए। उसके लिए माफ़ करना। \ n \ n शून्य कन्वर्ट QByteArrayToUser (QByteArray और aByteArray) { com :: your :: name_space :: उपयोगकर्ता उपयोगकर्ता; if (! User.ParseFromArray (aByteArray.data(), aByteArray.size())) { // पार्स नहीं कर सके } else { // yayyyyy अगर (user.has_userid()) { // ... } } } – Viren