के बीच डेटा भेजना मैं एक सी ++ सर्वर पर डेटा भेजने के लिए एक टीसीपी कनेक्शन का उपयोग कर रहा हूं। मैंने ईआई लाइब्रेरी के बारे में पढ़ा है, जब बाइनरी को डीकोडेड मूल्य को बाइनरी से बाहर करने के लिए कार्यों का एक समूह होता है। Egs, ei_decode_string, ei_decode_long और अन्य।एरलांग और सी ++
मैं इन साधारण चीजों को करने की कोशिश कर रहा हूं:
1. सॉकेट बनाएं और उससे कनेक्ट करें।
{ok, Socket} = gen_tcp:connect({127,0,0,1}, 8986, []).
2. gen_tcp का उपयोग करें: डेटा भेजने के लिए/2 भेजें।
gen_tcp:send(Socket, term_to_binary("Stackoverflow")).
इसलिए, मैं सर्वर पर एक स्ट्रिंग का एक बाइनरी प्रारूप भेज रहा हूं।
मेरे सर्वर, सी ++ कोड, डेटा हो जाता है और मैं जो कुछ भी ग्राहक मेरे का उपयोग कर सॉकेट तरह ei_decode_string से अधिक भेजता है पाने के लिए कोशिश कर रहा हूँ:
आदर्श रूप में, जब डीकोड मैं स्ट्रिंग, "Stackoverflow" के बाद से वापस मिलना चाहिए मैंने इसे बाइनरी से decode_as_string करने के लिए कहा। सुनिश्चित करें कि परिणामी बफर में पर्याप्त जगह थी।
char *p = (char*)malloc(sizeof(char) * 100);
int index = 0;
int decoded = ei_decode_string(buff, &index, p);
cout<<"The decoded value is "<<p<<endl;
मैं जो स्ट्रिंग भेजता हूं उसे डीकोड करने में सक्षम नहीं हूं। क्या मैं कुछ भूल रहा हूँ? यदि मैं सही दृष्टिकोण नहीं है, तो मैं डेटा को कैसे भेज सकता हूं और सर्वर पक्ष पर इसे डीकोड कर सकता हूं।
सहायता के लिए धन्यवाद!
इसे समझ लिया लेकिन यह सिर्फ एक चिमटा है। मैं देख सकता हूं कि सर्वर की तरफ, मुझे एक अतिरिक्त प्रश्न चिह्न (?) प्राप्त हो रहा है और यदि मैं उस चाप को छोड़कर बफर को पास करता हूं, तो ei_decode_string ठीक काम करता है। लेकिन यकीन नहीं है, मुझे वह अतिरिक्त प्रश्न चिह्न क्यों मिल रहा है (?)। – listen
मुझे लगता है कि 'binary_to_list (term_to_binary (" Stackoverflow ") के समान कारण मानते हैं) ' – Lol4t0
अपेक्षित, स्पष्ट उत्तर के लिए काम नहीं करता है: यदि कोई स्ट्रिंग को उस स्ट्रिंग के वर्णों का प्रतिनिधित्व करने वाली बाइनरी में परिवर्तित करना चाहता है, तो एक ['list_to_binary/1'] (http://erlang.org/doc/man/erlang.html#list_to_binary-1) का उपयोग करना चाहिए। 'term_to_binary' का उपयोग तब किया जाना चाहिए जब प्राप्तकर्ता [Erlang बाहरी टर्म प्रारूप] (http://erlang.org/doc/apps/erts/erl_ext_dist.html) में डेटा की अपेक्षा करता है। –