2010-05-18 11 views
7

डाटा से पढ़ने के लिए या, async_receive प्राप्त() का उपयोग कर एक जुड़ा टीसीपी सॉकेट से लिखा जा सकता है(), भेज() या async_send() सदस्य कार्य करता है। हालांकि, इन के रूप में कम लेखन में परिणाम या पढ़ता सकता है, एक आवेदन होगा आमतौर पर उपयोग निम्नलिखित संचालन के बजाय:, async_read पढ़ा()(), लिखना() और async_write()।boost.asio की सॉकेट की प्राप्त/प्रेषण कार्य खराब हैं?

मुझे वास्तव में यह नहीं पता है कि पढ़ने(), async_read(), लिखें() और async_write() भी कम लिखते हैं या पढ़ते हैं, है ना?
ये कार्य समान क्यों नहीं हैं?
क्या मुझे उनका उपयोग करना चाहिए?
क्या कोई मेरे लिए उस टिप्पणी को स्पष्ट कर सकता है?

उत्तर

6

पढ़, async_read, लिखने, और async_writeबना कार्यों उस वर्ग कार्यों को कई बार फोन तक बाइट्स की अनुरोध की गई संख्या से फैलता है कर रहे हैं। वे लाइब्रेरी द्वारा सुविधा के रूप में शामिल हैं। अन्यथा, प्रत्येक डेवलपर को एक ही तर्क को लागू करने की आवश्यकता होगी।

कक्षा फ़ंक्शन अंतर्निहित ओएस फ़ंक्शंस को सीधे लपेटते हैं, जो मूल रूप से दस्तावेज़ीकरण में बताते हैं: ये फ़ंक्शन सभी बाइट्स ट्रांसमिट किए जाने से पहले वापस आ सकते हैं।

ज्यादातर मामलों में, आपको डेटा संचारित करने के लिए मुक्त (रचित) फ़ंक्शंस का उपयोग करना चाहिए।

+0

क्यों यह था इस तरह से डिजाइन किया गया? किस मामले में आपको अनुरोध किए गए सभी बाइट प्राप्त करने की आवश्यकता नहीं है? सॉकेट ऑब्जेक्ट में रीड/राइट/async_read/async_write क्यों शामिल नहीं है? आप वैसे भी एक सॉकेट गुजर रहे हैं। –

+0

मुझे नहीं पता क्यों, लेकिन आप शायद "TR2 के लिए नेटवर्किंग लाइब्रेरी प्रस्ताव" में जवाब पा सकते हैं। http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2054.pdf – Dan

+1

पहले से जुड़े दस्तावेज़ के बारे में, पृष्ठ 8 पर देखें। – Dan

-1

सबसे पहले, आपको "एसिंक्रोनस" शब्द को समझना होगा, इसका मतलब है कि "प्रतीक्षा करने की आवश्यकता नहीं है"। एसिंक्रोनस क्रियाओं को लागू करने के बाद, निम्न क्रिया निष्पादित की जाएगी बिना एसिंक्रोनस एक्शन रिटर्न की प्रतीक्षा किए बिना। सिंक्रोनस को पिछले सिंक्रोनस क्रियाएं वापस आने तक का इंतजार करना होगा। Boost.Asio से दो निम्नलिखित नमूने मतलब होगा: A synchronous TCP daytime server

(! उफ़ नहीं पर्याप्त प्रतिष्ठा, दूसरा नमूना है, हालांकि आसानी से मिल रहा है "एक अतुल्यकालिक टीसीपी दिन सर्वर" कहा जाता है)

+0

यह मेरे प्रश्न से कैसे संबंधित है? –

+0

क्षमा करें .... मुझे लगता है कि आपके प्रश्न में पहला पैराग्राफ उद्धरण था ... इसलिए मैं उन्हें ingore ..... – rhapsodyn

संबंधित मुद्दे