2008-08-25 15 views

उत्तर

1

चूंकि यूडीपी कनेक्शन उन्मुख नहीं है, यह संकेत करने का कोई तरीका नहीं है कि दो पैकेट एक साथ हैं। नतीजतन आप एक एकल आईपी पैकेट (65535) के अधिकतम आकार से सीमित हैं। जो डेटा आप भेज सकते हैं वह कुछ हद तक कम है, क्योंकि आईपी पैकेट आकार में आईपी हेडर (आमतौर पर 20 बाइट्स) और यूडीपी हेडर (8 बाइट्स) शामिल हैं।

ध्यान दें कि इस आईपी पैकेट को छोटे पैकेट में फिट करने के लिए खंडित किया जा सकता है (उदाहरण के लिए ~ ईथरनेट के लिए 1500 बाइट्स)।

मुझे इस ओएस को प्रतिबंधित करने के बारे में पता नहीं है।

11

getockopt() का उपयोग करें। This site आपके द्वारा पुनर्प्राप्त किए जा सकने वाले उपयोग और विकल्पों का एक अच्छा टूटना है।

Windows में, आप कर सकते हैं:

 
int optlen = sizeof(int); 
int optval; 
getsockopt(socket, SOL_SOCKET, SO_MAX_MSG_SIZE, (int *)&optval, &optlen); 

लिनक्स के लिए, यूडीपी आदमी पृष्ठ के अनुसार, कर्नेल MTU खोज का उपयोग करेगा (यह जाँच करेगा क्या अधिकतम यूडीपी पैकेट आकार यहाँ और गंतव्य के बीच है , और इसे चुनें), या यदि एमटीयू खोज बंद है, तो यह अधिकतम आकार इंटरफ़ेस एमटीयू और खंड को बड़ा कर देगा। यदि आप ईथरनेट पर भेज रहे हैं, तो सामान्य एमटीयू 1500 बाइट्स है।

5

मैक ओएस एक्स पर (SO_SNDBUF) भेजने और प्राप्त करने (SO_RCVBUF) के लिए अलग-अलग मान हैं। यह भेजने बफर (आदमी getsockopt) के आकार है:

getsockopt (जुर्राब, SOL_SOCKET, SO_SNDBUF, (int *) & optval, & optlen);

एक बड़ा संदेश भेजने की कोशिश कर रहा है (स्थानीय लूपबैक के माध्यम से भेजे गए यूडीपी पर तेंदुए 9216 ऑक्टेट्स पर) परिणामस्वरूप "संदेश बहुत लंबा/EMSGSIZE" होगा।

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