मैं इंडी क्लाइंट का उपयोग कर रहा हूं संदेश भेजने के लिए सर्वर मुझे भेज रहा है (क्लाइंट)। यह एक बार में मेरे लिए 512 बाइट डेटा भेजता है। डेटा के यह 512 बाइट दो डेटाटाइप (शब्द और स्ट्रिंग) से बना है। उदाहरण के लिए, यह 2 बाइट्स का शब्द भेजता है, फिर फिर 2 बाइट्स का शब्द और फिर 50 बाइट्स का स्ट्रिंग और इसी तरह।डेल्फी में इंडी क्लाइंट का उपयोग कर सर्वर से सभी बाइट्स को कैसे पढ़ा जाए?
var BufferArray : Array[0..512] of Byte;
if IdTCPClient1.IOHandler.InputBufferIsEmpty then
begin
if IdTCPClient1.IOHandler.CheckForDataOnSource(1000) then
begin
Edit1.Text := idtcpclient1.IOHandler.ReadBytes(BufferArray ,512, true);
end;
end;
मैं लाइन Edit1.Text पर त्रुटि हो रही है:: मैं इस समस्या से निपटने के लिए निम्न कोड कोशिश कर रहा हूँ = idtcpclient1.IOHandler.ReadBytes (BufferArray, 512, सच); त्रुटि: वास्तविक और औपचारिक var पैरामीटर का प्रकार समान होना चाहिए।
क्या यह सही दृष्टिकोण है जिसका मैं उपयोग कर रहा हूं। मैं Edit1.Text पर पूरे 512 बाइट्स को स्टोर करना चाहता हूं और फिर वह डेटा जो मैं उस डेटा के साथ करना चाहता हूं। कृपया सर्वर से सभी 512 बाइट प्राप्त करने में मेरी सहायता करें।
अद्यतन: अदल-बदल कर दृष्टिकोण
मैं इस दृष्टिकोण का उपयोग कर रहा शब्द पढ़ने के लिए और स्ट्रिंग को महत्व देता है की तरह
स्ट्रिंग के लिए
WordArray : array[0..5] of word;
if IdTCPClient1.IOHandler.InputBufferIsEmpty then
begin
if IdTCPClient1.IOHandler.CheckForDataOnSource(1000) then
begin
i := 0;
while i < 6 do //Read all the words
begin
//Fill WORD data in array
WordArray[i] := (IdTCPClient1.Socket.ReadWord(True));
end;
end;
end;
इसी दृष्टिकोण WordArray [i]: = (IdTCPClient1। Socket.ReadString (50));
ठीक काम कर रहा है, लेकिन मुझे लूप में सभी डेटा पढ़ने के दौरान कनेक्शन खोलना होगा। यदि कनेक्शन के बीच में, मैं सब कुछ खो देता हूं और सर्वर से फिर से पूरे पैकेज का अनुरोध करना पड़ता हूं।
उपयोग के लिए 'BufferArray', अपने घोषणा करने के लिए' वर BufferArray बदलने एक गतिशील सरणी: TBytes; '। – TLama
हां, वही किया। इसने काम कर दिया। धन्यवाद। अब मुझे और समस्याएं हैं। मैं इस बफरएरे के माध्यम से कैसे पुन: प्रयास कर सकता हूं? मैं इसे सब कुछ एक स्ट्रिंग सरणी में स्टोर करना चाहता हूं। –
@TLama - मेरा प्रश्न अपडेट किया गया। क्या मेरा नया दृष्टिकोण सही है? –