मुझे एक असामान्य स्थिति मिली है: मैं एक एम्बेडेड स्थिति (इंटेल बॉक्स, वर्तमान में 2.6.20 कर्नेल का उपयोग कर) में एक लिनक्स सिस्टम का उपयोग कर रहा हूं। एक एम्बेडेड सिस्टम के साथ संवाद करें जिसमें आंशिक रूप से टूटा हुआ टीसीपी कार्यान्वयन है। जैसा कि मैं अभी बता सकता हूं कि वे प्रत्येक संदेश को अलग ईथरनेट फ्रेम में आने की उम्मीद करते हैं! जब उन्हें ईथरनेट फ्रेम में संदेश विभाजित होते हैं तो उन्हें समस्याएं प्रतीत होती हैं।मुझे तत्काल डेटा भेजने के लिए एक टीसीपी विकल्प (ioctl) की आवश्यकता है
हम डिवाइस के साथ स्थानीय नेटवर्क पर हैं, और हमारे बीच कोई रूटर नहीं है (केवल एक स्विच)।
हम निश्चित रूप से, उन्हें अपने सिस्टम को ठीक करने के लिए मजबूर करने की कोशिश कर रहे हैं, लेकिन यह संभव नहीं हो सकता है।
मैंने अपने सॉकेट पर पहले से ही TCP_NODELAY सेट किया है (मैं उनसे कनेक्ट हूं), लेकिन यह केवल तभी मदद करता है जब मैं एक समय में एक से अधिक संदेश भेजने की कोशिश नहीं करता। यदि मेरे पास पंक्ति में कई आउटगोइंग संदेश हैं, तो वे संदेश एक या दो ईथरनेट फ्रेम में समाप्त होते हैं, जो अन्य सिस्टम पर परेशानी का कारण बनता है।
मैं आम तौर पर एक साथ संदेश भेजने से बचने के लिए टाइमर का उपयोग कर समस्या से बच सकता हूं, लेकिन यह स्पष्ट रूप से हमारे थ्रूपुट को सीमित करता है। इसके अलावा, अगर मैं समय को बहुत कम कर देता हूं, तो मुझे नेटवर्क की भीड़ को पैकेट ट्रांसमिट को पकड़ने और एक ही पैकेट में मेरे एक से अधिक संदेशों को अनुमति देने का जोखिम उठाना पड़ता है।
क्या कोई तरीका है कि मैं यह बता सकता हूं कि ड्राइवर के पास डेटा कतारबद्ध है या नहीं? क्या कोई तरीका है कि मैं ड्राइवर को स्वतंत्र परिवहन परत पैकेट में स्वतंत्र लेखन कॉल भेजने के लिए मजबूर कर सकता हूं? मैंने सॉकेट (7) और टीसीपी (7) मैन पेजों के माध्यम से देखा है और मुझे कुछ भी नहीं मिला। यह हो सकता है कि मैं नहीं जानता कि मैं क्या देख रहा हूं।
जाहिर है, यूडीपी एक रास्ता होगा, लेकिन फिर, मुझे नहीं लगता कि हम इस बिंदु पर दूसरे छोर को और कुछ भी बदल सकते हैं।
किसी भी मदद की बहुत सराहना की।
अच्छा विचार। दुर्भाग्यवश, चूंकि संदेश आकार में समान नहीं हैं, इसलिए मैं एक एमटीयू नहीं चुन सकता जो इस उदाहरण में प्रति फ्रेम एक संदेश बीमा करेगा। –