2010-05-05 16 views
8

के लिए टीसीपी प्राप्त विंडो बढ़ाएं एक विशिष्ट सॉकेट के लिए टीसीपी प्राप्त विंडो कैसे बढ़ाएं? - मुझे पता है कि रजिस्ट्री कुंजी TcpWindowSize, सेट करके सभी सॉकेट के लिए ऐसा कैसे करें, लेकिन किसी विशिष्ट के लिए यह कैसे करें?एक विशिष्ट सॉकेट

MSFT's documents के अनुसार, जिस तरह से

कॉलिंग विंडोज सॉकेट में कार्य setsockopt है, जो एक प्रति-सॉकेट आधार पर खिड़की प्राप्त करता है।

लेकिन setsockopt में, यह SO_RCVBUF के बारे में उल्लेख किया गया है:

निर्दिष्ट करता कुल प्रति-सॉकेट बफर अंतरिक्ष प्राप्त करता है के लिए आरक्षित। यह SO_MAX_MSG_SIZE से असंबंधित है और टीसीपी प्राप्त विंडो के आकार के अनुरूप नहीं है।

तो क्या यह संभव है? कैसे?

धन्यवाद।

उत्तर

5

SO_MAX_MSG_SIZE यूडीपी के लिए है। यहां MSDN:

SO_MAX_MSG_SIZE - प्रोटोकॉल द्वारा समर्थित संदेश-उन्मुख सॉकेट के लिए अधिकतम आउटबाउंड संदेश आकार देता है। धारा-उन्मुख सॉकेट के लिए कोई मतलब नहीं है।

यह सेटटेबल नहीं है।

टीसीपी के लिए बस SO_(SND|RCV)BUF का उपयोग करें।

1

मुझे पूरा यकीन है कि SO_RCVBUF वह है जो आप चाहते हैं। पहला लिंक कहता है कि सिस्टम पर सेट किए गए किसी भी प्रकार से ऊपर और ऊपर टीसीपी विंडो आकार निर्धारित करने के लिए SO_RCVBUF की सर्वोच्च प्राथमिकता है। जिस तरह से मैं इसे पढ़ रहा हूं, मुझे लगता है कि सभी दूसरे भाग यह कह रहे हैं कि SO_RCVBUF आकार को विंडो आकार प्राप्त करने के लिए सिस्टम से मेल नहीं करना पड़ेगा। दूसरे शब्दों में, यह आपके द्वारा सेट किया गया एक अलग आकार हो सकता है।

+0

धन्यवाद। और क्या SO_MAX_MSG_SIZE सेट करने का कोई तरीका है? – rkellerm

0

आपको इसे ट्यून करने और परिणामों का परीक्षण करने की सावधानी बरतनी होगी। विंडोज विस्टा और ऊपर एक स्मार्ट अनुकूली खिड़की का आकार ऑटो ट्यूनिंग सुविधा है जो विशेष रूप से विंडो आकार को 3 जी और उच्च हानि नेटवर्क जैसे लैन और लंबे वसा नेटवर्क पर अच्छी तरह से काम करने के लिए ट्यून करता है। विंडो आकार को सेट करने से आप इसे ओवरराइड कर देंगे ताकि विंडोज़ विंडो विंडो को स्वचालित रूप से ट्यून नहीं कर सकें। यह आपके प्रदर्शन को नुकसान पहुंचा सकता है, आपको सेलुलर नेटवर्क जैसे विशेष रूप से उच्च विलंबता नेटवर्क पर चलाने की आवश्यकता होनी चाहिए।

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