2011-10-23 8 views
47

के सॉकेट बफर आकार को कैसे ढूंढें लिनक्स का डिफ़ॉल्ट सॉकेट बफर आकार क्या है? क्या इसे देखने के लिए कोई आदेश है?लिनक्स

उत्तर

85

आप टर्मिनल में अपने बफर आकार देखना चाहते हैं, तो आप पर एक नज़र ले जा सकते हैं:

  • /proc/sys/net/ipv4/tcp_rmem (पढ़ने के लिए)
  • (लिखने के लिए)

/proc/sys/net/ipv4/tcp_wmem वे तीन संख्याएँ शामिल , जो क्रमशः न्यूनतम, डिफ़ॉल्ट और अधिकतम मेमोरी आकार मान (बाइट में) हैं।

+11

संदर्भ के लिए रिकॉर्ड्स और '/ proc/sys/net/core/wmem_default' के लिए'/proc/sys/net/core/rmem_default' भी है, जैसा कि संदर्भित है http://man7.org/linux/man- पेज/मैन 7/सॉकेट 7.html –

26

निम्नलिखित C/C++ प्रोग्राम में बफर आकार हो रही के लिए प्रवाह

int n; 
unsigned int m = sizeof(n); 
int fdsocket; 
fdsocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); // example 
getsockopt(fdsocket,SOL_SOCKET,SO_RCVBUF,(void *)&n, &m); 
// now the variable n will have the socket size 
+0

क्या इसके बजाय 'सॉकेट (AF_INET, SOCK_STREAM, IPPROTO_TCP) कॉल करना सुरक्षित है? मैं 'सीवीवी' कॉल को कम करने के लिए बफर आकार प्राप्त करने के लिए अपने स्विफ्ट टीसीपी ढांचे में इस सी कॉल का उपयोग कर रहा हूं। – DevAndArtist

+0

नोट: यह केवल पढ़ने वाले बफर आकार का है, लिखने वाले बफर का आकार प्राप्त करने के लिए SO_SNDBUF का उपयोग करें। कम से कम लिनक्स के तहत, आप बफर के वर्तमान प्रयुक्त राज्य को सम्मानपूर्वक प्राप्त करने के लिए ioctl SIOCINQ और SIOCOUTQ का उपयोग कर सकते हैं। – Rahly

-5

परमाणु आकार 4096 है बाइट्स, अधिकतम आकार 65536 बाइट्स है। Sendfile 4096 बाइट आकार में से प्रत्येक 16 पाइप का उपयोग करता है। सेमीडी: ioctl (एफडी, FIONREAD, & buff_size)।

+2

'परमाणु आकार' का क्या अर्थ है; 'sendfile() को इसके साथ क्या करना है; और आपने डिफ़ॉल्ट सॉकेट बफर आकार के बारे में प्रश्न का उत्तर कहाँ दिया है? – EJP

+0

@ ईजेपी परमाणु आकार - लिनक्स आंतरिक 4096b सॉकेट स्थानांतरण के लिए जोर देते हैं - एमटी-सुरक्षित, म्यूटेक्स, 1/16 आंतरिक पाइप। sandfile इसके साथ बहुत कुछ करने के लिए है। मेरे ख़याल से मेरे पास है। डिफ़ॉल्ट बफर आकार 16 * 4096b है। –

+0

इनमें से कोई भी प्रश्न का उत्तर नहीं देता है। यह सॉकेट भेजने और बफर आकार प्राप्त करने के बारे में है। 'Sendfile()' के बारे में नहीं, जिसके कारण * इसके साथ कुछ भी नहीं करना है, न ही परमाणु हस्तांतरण आकार, या तो। – EJP