c++ - Why are the buffers in VxWorks sendto() and send() functions of different types, and how do I handle them in the same manner? -


VxWorks में, sendto () के रूप में परिभाषित किया गया है:

  int sendto (int s, / * सॉकेट * / caddr_t buf को डेटा भेजने के लिए, / * डेटा बफर * / int bufLen, / * बफ़र की लंबाई * / int flags, / * अंतर्निहित प्रोटोकॉल के लिए झंडे * / struct sockaddr *, / * प्राप्तकर्ता का पता * / Int tolen / * की लंबाई sockaddr * /)   

और भेजें () के रूप में परिभाषित किया गया है:

  int भेज (int s, / * गर्तिका * / const char * buf, / * सूचक को संचारित करने के लिए बफर करने के लिए * / int bufLen, / * बफर की लंबाई * / int flags / * अंतर्निहित प्रोटोकॉल के लिए झंडे * /)   < P> मेरा मुद्दा यह है कि sendto () में बफ़र स्थिर नहीं है, जबकि बफ़र भेजने () है यह POSIX मानक का अनुपालन नहीं करता है मैं भी क्रॉस-कंपाइल करने के लिए अपना कोड लिख रहा हूं, इसलिए बफर को कॉन्स्ट-रिकॉर्ड्स * के बजाय कोस्ट रिक्त * के रूप में पारित किया गया है। मैं फ़ंक्शन को इसी तरह कार्य करने के लिए मिल सकता है अगर नीचे कार्य को कॉल करने से ऐसा न हो:  
  // मानते हुए सॉकेट डेटा पहले से ही भेज दिया गया है (फाइल डिस्क्रिप्टर, रीइनरप्टी_कास्ट & लेफ्टिनेंट; const char * & gt; (pBuffer ), बफर लैंग, झंडे); Sendto (फ़ाइल डिस्क्रिप्टर, कॉन्स्ट-टाइप और लेफ्टिनेंट; चार * & gt; (reinterpret_cast & lt; const char * & gt; (pBuffer)), बफ़र लैंग, झंडे, गंतव्यएदद, डेस्टएडड्रलन);   

ऐसा लगता है कि डेटा के एक ही टुकड़े पर इन दो कार्यों का उपयोग करने के लिए एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए।

यह भी ध्यान देना ज़रूरी है कि, जब यह काम कर सकता है, मुझे अपने कोड से सभी टाइपकास्टिंग हटाने की आवश्यकता हो सकती है। क्या इस तरह से टाइपकास्टिंग, निहित या स्पष्ट बिना निपटने का कोई तरीका है?

pBuffer के डेटाटाइप बदलने के अलावा अपने आप में, मुझे और अधिक सुरुचिपूर्ण समाधान नहीं मिला।

Comments