2013-08-06 7 views
15

मुझे सी (लिनक्स उबंटू) में सॉकेट प्रोग्रामिंग में सोमैक्सकॉन के बारे में कुछ भी नहीं समझा। मैंने कई साइटों के माध्यम से खोज की, लेकिन वे सभी मेरी मदद नहीं कर सके।सी सॉकेट प्रोग्रामिंग में सोमैक्सकॉन का क्या अर्थ है?

listen(sockfd,SOMAXCONN); 

क्या इसका मतलब अधिकतम संख्या में समवर्ती रूप से सुनना है। जुड़े सॉकेट के?

उत्तर

14
#include <sys/socket.h> 

int listen (int socket, int backlog); 

बैकलॉग तर्क कार्यान्वयन जो कार्यान्वयन सॉकेट की सुनने की कतार में बकाया कनेक्शन की संख्या को सीमित करने के लिए उपयोग करेगा करने के लिए एक संकेत देता है। कार्यान्वयन बैकलॉग पर एक सीमा लगा सकता है और चुपचाप निर्दिष्ट मूल्य को कम कर सकता है। आम तौर पर, एक बड़ा बैकलॉग तर्क मान परिणामस्वरूप कतार कतार की एक बड़ी या बराबर लंबाई में होगा। कार्यान्वयन <sys/socket.h> में परिभाषित SOMAXCONN तक बैकलॉग के मानों का समर्थन करेगा।

listen() बैकलॉग तर्क मान 0 से कम के साथ कहा जाता है, तो समारोह बर्ताव करता है जैसे कि यह 0.

का संचित तर्क मान के साथ बुलाया गया था 0 के एक बैकलॉग तर्क को सॉकेट अनुमति दे सकता है कनेक्शन स्वीकार करें, इस मामले में सुनो कतार की लंबाई कार्यान्वयन-परिभाषित न्यूनतम मान पर सेट की जा सकती है।

जैसा कि here देखा गया है।

+2

उन है कि आसानी से याद करने के लिए क्या मतलब है SOMAXCONN आवश्यकता हो सकती है के लिए में इसके बारे में अधिक पढ़ सकते हैं, मुझे लगता है कि यह सॉकेट बकाया मैक्स कनेक्शन के लिए कम है। मैं गलत हो सकता था, लेकिन यह मुझे याद रखने में मदद करता है! :-) – rhgrant10

+3

या अधिक संभावना है, और अन्य बीएसडी सॉकेट # डिफाइन के साथ अधिक संगत, सॉकेट अधिकतम कनेक्शन या सॉकेट अधिकतम कनेक्शन संख्या – uchuugaka

+0

उद्धृत टेक्स्ट के लिए उद्धरण स्वरूपण का उपयोग करें। – EJP

7

बस शब्दों में कहें, बैकलॉग आपके द्वारा सॉकेट पर इच्छित कतारबद्ध कनेक्शन की अधिकतम संख्या है .. यह कतार वहां है ताकि आप क्लाइंट से कनेक्शन को संभाल सकें जबकि अन्य लाइन में प्रतीक्षा करें, बैकलॉग निर्दिष्ट करता है कि आप इसे कब तक चाहते हैं होने के लिए लाइन। यदि अधिक क्लाइंट बैकलॉग से अधिक, आपके सर्वर से कनेक्ट करने का प्रयास करते हैं, तो उन कनेक्शनों को हटा दिया जाएगा।

SOMAXCONN आपके सिस्टम पर पर पर जाने की अधिकतम संख्या को परिभाषित करता है।

आप man page

+0

उन कनेक्शनों को विंडोज़ द्वारा छोड़ा जाएगा। उन्हें अन्य प्लेटफार्मों द्वारा अनदेखा कर दिया जाएगा, जो ग्राहक को दो बार फिर से प्रयास करने का कारण बनेंगे और फिर भी कोई प्रतिक्रिया नहीं होने पर टाइमआउट का समय लगेगा। – EJP

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