से फ्लोट सरणी भेजें I C++ सर्वर से कुछ डेटा को सी # क्लाइंट में भेजने का प्रयास कर रहा हूं। मैं चार सरणी पर भेजने में सक्षम था। लेकिन फ्लोट सरणी के साथ कुछ समस्या है।सी ++ सर्वर से सी # क्लाइंट
यह सी ++ सर्वर साइड
float* arr;
arr = new float[12];
//array init...
if((bytecount = send(*csock, (const char*)arr, 12*sizeof(float), 0))==SOCKET_ERROR){
}
पर कोड तो हाँ मैं आकार 12.
की एक नाव सरणी पर भेजने के लिए कोशिश कर रहा हूँ यहाँ क्लाइंट साइड के लिए कोड है। (यह अजीब था पहली जगह में धारा से बाहर नाव प्राप्त करने के लिए कोई आसान तरीका नहीं था। मैंने पहले सी # इस्तेमाल नहीं किया है और हो सकता है कि वहाँ कुछ बेहतर है कि?)
//get the data in a char array
streamReader.Read(temp, 0, temp.Length);
//**the problem lies right here in receiving the data itself
//now convert the char array to byte array
for (int i = 0; i < (elems*4); i++) //elems = size of the float array
{
byteArray = BitConverter.GetBytes(temp[i]);
byteMain[i] = byteArray[0];
}
//finally convert it to a float array
for (int i = 0; i < elems; i++)
{
float val = BitConverter.ToSingle(byteMain, i * 4);
myarray[i] = val;
}
जाने की स्मृति को देखने पर डंप दोनों पक्षों और समस्या स्पष्ट हो जाएगा -
//c++ bytes corresponding to the first 5 floats in the array
//(2.1 9.9 12.1 94.9 2.1 ...)
66 66 06 40 66 66 1e 41 9a 99 41 41 cd cc bd 42 66 66 06 40
//c# - this is what i get in the byteMain array
66 66 06 40 66 66 1e 41 fd fd 41 41 fd 3d ? 42 66 66 06 40
2 पर ग # यहाँ समस्याएं हैं पक्ष 1) पहले यह 127 से ऊपर 0x80 ऊपर कुछ भी() (असंगत संरचनाओं संभाल नहीं करता है) 2)? कुछ अविश्वसनीय कारण यह एक बाइट छोड़ देता है !!
और इस 'temp' में होता है सही डेटा
प्राप्त मैं बाहर कुछ लेकिन कुछ भी अभी भी लगाने की कोशिश कर रहा है के समय में। क्या आपको कोई विचार है कि यह क्यों हो रहा है? मुझे यकीन है कि मैं कुछ गलत कर रहा हूं ... बेहतर दृष्टिकोण के लिए सुझाव?
अपने कोड से धन्यवाद एक बहुत
'स्ट्रीम रीडर' को 'System.IO.StreamReader ()' के रूप में परिभाषित किया गया है। हाँ मुझे लगता है कि 'बाइनरी रीडर' एक बेहतर विकल्प हो सकता है। धन्यवाद मुझे इसे आज़माएं। –
sg88
धन्यवाद !! कोशिश की और इसका परीक्षण किया - यह – sg88