c - read from socket stops on last byte -
सर्वर.c
बाइट्स रिसाइज्ड = 0; चार बफ [256]; चार * बफ़फ़ाइल; चार तामबबत; बाइट्स रिसाइज्ड = पढें (clnt_fd, & amp; tempbuff, 1); बफ़फ़ाइल = (चार *) मॉलोक (आकारफ (चार)); buffFile [0] = tempbuff; लंबा इंक = 1; जबकि (बाइट्स रीएसीएटेड & gt; 0) {बाइट्स रीएसीड = पढ़ा (clnt_fd, और टेम्पकबफ़, 1); incr ++; बफ़फ़ाइल = (चार *) रीएलएलक (बफ़फ़ाइल, आकारफ (चार) * इंक); buffFile [incr-1] = tempbuff; } client.c <प्री> चार फ़ाइलबफ़ [20]; स्ट्रक्पी (फाइलबफ, "यूपीसी"); घुमटा (फाइलबफ, फ़ाइल_आकार); // यह फाइल का आकार घुमटा हुआ है (फ़ाइलबफ, ""); लिखना (clnt_fd, filebuff, strlen (फाइलबफ)); जबकि (1) {int nread = fread (file_bytes, 1,256, एफपी); बाइट्सेंट = लिखना (clnt_fd, file_bytes, नाक); यदि (बाइट्सेंट & lt; 0) {printf ("त्रुटि:% s \ n", strerror (errno)); टूटना; } अगर (नाक और लेफ्टिनेंट; 256) {char t = '\ n'; बाइट्सेंट = लिखना (clnt_fd, & amp; t, 1); टूटना; }} तो मूल रूप से, ग्राहक इस तरह एक संदेश भेज देगा और मुझे '\ n' को अंतिम बाइट के रूप में रखना होगा।
UPC 5624 Bytesbytesbytesetcetc \ n और सर्वर उन बाइट्स को प्राप्त करेगा जो कि मुझे एक अरै में डाल दिया जाता है ताकि उन्हें टोकऩे और फ़ाइल में लिखने के लिए उन बाइट्स को सरणी से प्राप्त कर सकें। समस्या यह है, मैंने एक काउंटर बना लिया है, मैंने देखा है कि क्लाइंट से कितने बाइट भेजे गए थे, और हर बार एक लूप समाप्त होने पर कितने बाइट प्राप्त होते हैं, और मैंने देखा है कि पिछले बाइट पर, मेरा सर्वर फ़ंक्शन पढ़ें और वहां लटका हुआ है। किसी भी विचार?
मैं वास्तव में एक सी + + आदमी नहीं हूँ, लेकिन ऐसा लगता है कि इससे पहले कि आप- लूप, आप एक 'पठन' निष्पादित करते हैं और जब आप पाश में प्रवेश करते हैं, तो आप 'पठित' को फिर से निष्पादित करते हैं, यह थोड़ा अजीब लगता है।
इसके अलावा 'incr ++;' आपके समय के निचले हिस्से में लूप क्षेत्र क्योंकि आप पहले से ही 1 के ऑफसेट के साथ शुरुआत करते हैं और इससे पहले कि आप लिखते / incr का उपयोग करें, आप incr पहले से ही बढ़ाते हैं तो आपको बफर एरे में incr-1 करने की ज़रूरत नहीं है (क्योंकि आप अपने लूप के पहले पुनरावृत्त में बफ़फ़ाइल [0] का पहला तत्व भी याद नहीं किया)
बस इसका उल्लेख करते हुए, टी पता है कि यह आपके प्रश्न का हल (मोबाइल फोन कीबोर्ड के साथ इसका जवाब दे रहा है ...)
Comments
Post a Comment