सी में मेरे पास कोड कोड था लेकिन मुझे पता नहीं था कि यह क्यों काम करता है, इसलिए मैंने इसे फिर से लिखना शुरू कर दिया ताकि मैं वास्तव में समझ सकूं कि क्या हो रहा है।recv() के आउटपुट को कैसे स्टोर करें?
अब तक इतना अच्छा है! मैं फिर से लिखता हूं और 9 0% यकीन करता हूं कि मैं अब जो कुछ भी चल रहा हूं उसे समझता हूं; हालांकि, यह मुद्दा है कि मुझे नहीं पता कि मेरे पूर्व आवंटित बफर (htmlbff
) में recv
(databff
) द्वारा प्राप्त डेटा खंड को कैसे स्टोर किया जाए।
निम्नलिखित कोड पर विचार करें (ध्यान दें कि मैं इस नीचे काफ़ी छीन, तो यह केवल मूल बातें, जैसे कोई स्मृति पुनः आबंटन शामिल या सुरक्षा रिसाव, आदि ...):
#define BUFFERSIZE 4096
#define MAXDATASIZE 256
char *htmlbff, databff[MAXDATASIZE];
int c, i = BUFFERSIZE, q = 0;
if(!(htmlbff = malloc(i)))
{
printf("\nError! Memory allocation failed!");
return 0x00;
}
while((c = recv(sock, databff, MAXDATASIZE, 0)) > 0)
{
/*memory checks stripped out since they are irrelevent for this post*/
/*store data to the appropriate area in htmlbff*/
q += c;
}
तो (यदि मैं यह सही कर रहा हूं, और चीजें चल रही हैं जैसा कि मुझे लगता है कि वे हैं) c
वर्तमान डेटा खंड का आकार है, और q
अब तक प्राप्त डेटा की कुल राशि है (q
प्रत्येक बार लूप दोहराने पर c
द्वारा बढ़ाया जाता है)। फिलहाल मैं मेमोरी हैंडलिंग के लिए q
का उपयोग कर रहा हूं (यदि कोई सोच रहा था) लेकिन मुझे विश्वास है कि इस समस्या के समाधान में इसका उद्देश्य भी होगा।
किसी भी दर पर मैं जो प्रश्न पूछ रहा हूं वह दूसरी टिप्पणी के संबंध में है। मैं डेटा को रीव से htmlbff
में सही तरीके से कैसे स्टोर करूं?
मुझे वास्तव में यह जवाब पसंद है धन्यवाद। मैंने इसे सबसे उपयोगी पाया क्योंकि अब मैं केवल बफर का उपयोग करके छोड़ सकता हूं और सीधे HTMLbff में लिख सकता हूं। –